虽然PUT
和POST
之间的阅读差异,但我遇到了这样的回答:
HTTP PUT应该接受请求的主体,然后将其存储在URI标识的资源中。
HTTP POST更通用。应该在服务器上启动一个动作。该操作可能是将请求正文存储在URI标识的资源上,或者可能是其他URI,或者可能是其他操作。
现在,通过this tutorial时,我发现了这一点:
@RequestMapping(value = EmpRestURIConstants.DELETE_EMP, method = RequestMethod.PUT)
public @ResponseBody Employee deleteEmployee(@PathVariable("id") int empId) {
logger.info("Start deleteEmployee.");
Employee emp = empData.get(empId);
empData.remove(empId);
return emp;
}
我在考虑是否要使用PUT
,我应该使用@RequestBody
。但这似乎并非如此。上面的方法似乎非常像PUT
使用GET
,对不对?还是我在这里什么都没有?
问题1。这些方法的明确目的是什么,或者至少在使用某些方法“ 不能”时?
第二季度。就像,如果我使用的是GET
,那么我就不能使用@RequestBody
,因为GET
的请求中没有任何内容,我被留下了仅使用@RequestParam
和@PathVariable
以及PUT
和POST
就可以全部使用。而且,无论使用哪种方法,都可以返回@ResponseBody
。如果所有这些猜测都是正确的,那么他们的官方文件是否解释了所有这些限制,包括其他方法的限制?
答案 0 :(得分:0)
因此,我从未对此进行更多的思考,并且几乎总是使用 GET 或 POST ,但是在阅读此blog之后,似乎清除何时在 POST 上使用 PUT 。在这里,我将引用博客。
PUT方法有什么作用?
PUT方法完全替换了当前存在的任何内容。 目标网址以及其他内容。使用这种方法,您可以创建一个新的 资源或覆盖现有的,只要您知道确切的 请求URI。一个用于创建新PUT方法的示例 资源类似于以下内容:
PUT /forums/<new_thread> HTTP/2.0 Host: https://yourwebsite.com/
其中的实际名称或ID号 线。或者,使用PUT方法覆盖现有的 资源可能看起来像这样:
PUT /forums/<existing_thread> HTTP/2.0 Host: https://yourwebsite.com/
简而言之,PUT方法用于在以下位置创建或覆盖资源 客户端已知的特定URL。
POST方法有什么作用?
HTTP POST方法用于将用户生成的数据发送到Web 服务器。例如,当用户评论一个 论坛或他们上传个人资料图片的情况。 POST方法也应该 如果您不知道新网址的具体网址,请使用 创建的资源应驻留。换句话说,如果有新的论坛主题 创建并且未指定线程路径,则可以使用 像这样:
POST /forums HTTP/2.0 Host: https://yourwebsite.com/
结论
因此,在阅读本文并查看示例之后,就很有意义了为什么使用 PUT 而不是 POST 了,这与您的URL有关。由于您使用的是@PathVariable
,这意味着您完全了解确切的Request-URI。否则,使用 POST 会更有意义。
答案 1 :(得分:0)