在RESTful应用程序中,我们如何区分“操作”和HTTP动词(GET、POST、PUT、DELETE)?
例如,我理解的是,对资源/products的GET请求应返回所有产品的列表。对/products的POST请求应创建一个新产品。那么,用户如何请求用于创建产品的原始表单?我的初步回答可能是对同一URI的GET请求,但如上所述,那应该返回所有产品的列表,而不是用于创建产品的空白表单。
在大多数我研究过的框架中,这个问题通过将“操作”部分作为URI的一部分来解决。例如,对/products/create的POST请求会创建一个新产品,而对/products/create的GET请求会提供用于创建产品的空白表单。要获取所有产品的列表,可以对/products或/products/get、/products/read等进行GET请求,具体取决于所使用的框架。这种方法解决了上述的歧义,但与我所读到的传统REST设计相冲突。
例如,我理解的是,对资源/products的GET请求应返回所有产品的列表。对/products的POST请求应创建一个新产品。那么,用户如何请求用于创建产品的原始表单?我的初步回答可能是对同一URI的GET请求,但如上所述,那应该返回所有产品的列表,而不是用于创建产品的空白表单。
在大多数我研究过的框架中,这个问题通过将“操作”部分作为URI的一部分来解决。例如,对/products/create的POST请求会创建一个新产品,而对/products/create的GET请求会提供用于创建产品的空白表单。要获取所有产品的列表,可以对/products或/products/get、/products/read等进行GET请求,具体取决于所使用的框架。这种方法解决了上述的歧义,但与我所读到的传统REST设计相冲突。
GET
和POST
)就足够了。 - FtDRbwLXw6GET
请求。然后,您可能会使用Javascript将表单转换为JSON请求,然后将其PUT
到/products。正如您已经指出的那样,这种情况很少发生,可能部分原因是为了方便,部分原因是因为REST通常没有完全利用大多数Web资源。 - Robert HarveyGET
方法),而不是产品资源的一种操作? - FtDRbwLXw6