关于REST PUT动词和其他基于CRUD的动作的一些说明

时间:2011-06-29 23:41:57

标签: java http rest httpclient

我已阅读有关REST的this GREAT答案。关于它我几乎没有问题:

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

1 个答案:

答案 0 :(得分:2)

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

REST!= CRUD。

宁静的架构迫使您在资源中思考。 因此,“报告”可能是资源的良好候选者。

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