【问题标题】:some clarifications regarding REST PUT verb and other none CRUD based actions关于 REST PUT 动词和其他非基于 CRUD 的操作的一些说明
【发布时间】:2011-06-29 23:41:56
【问题描述】:

我已经阅读了this 很棒的关于 REST 的答案。我对此有几个问题:

  1. 根据答案和我阅读的内容,新的资源创建需要使用 PUT 动词发生,但在大多数情况下,当您创建资源时,您需要提供参数,有时还需要提供二进制数据。 使用 PUT 的方法是什么?使用多部分 POST 不是更自然吗?
  2. 谁能指导我使用 PUT 发送二进制文件和字符串的示例,最好使用 httpClient 库。
  3. 如果我想要一些超出基本 CRUD 操作的东西,使用什么动词?比如生成关于其中一种资源的报告。

谢谢

【问题讨论】:

    标签: java http rest httpclient


    【解决方案1】:

    您将 HTTP 动词与实际负载混淆了。 没有什么能阻止您将多部分有效负载用于 PUT。 POST 可用于创建新资源,但您通常发布到不同的 URL。 作为副作用,可能会在 Location 标头中创建并返回新资源。 如果您已经拥有资源的 URL,则使用 PUT。

    REST != CRUD。

    宁静的架构迫使您在资源方面进行思考。 所以“报告”可能是一个很好的资源候选者。

    您可以将报告参数发布到 /..../reports 之类的资源(例如),然后以这种方式创建新的报告资源。将报告的 URL 放在所述 Location 标头中,并使用 GET 实际获取报告数据(或立即返回报告数据)

    【讨论】:

    • 您好,感谢您的快速回复。我还认为 put 调用可以是多部分的,但缺乏示例以及 Apache FileUpload 库无法识别 PUT 调用中的多部分这一事实让人有点困惑。
    猜你喜欢
    • 1970-01-01
    • 2011-06-17
    • 2016-03-31
    • 2011-07-14
    • 1970-01-01
    • 2012-05-28
    • 1970-01-01
    • 2021-09-28
    • 1970-01-01
    相关资源
    最近更新 更多