我创建了一个Spring MVC Web应用程序。
该应用程序向控制器发出几次调用。这些电话是关闭/开放/结束游戏。
我使用Ajax进行这些调用,因此我可以在页面顶部处理响应。
ajaxPost = function (url, action, id, onSuccess, onError) {
$.ajax({
type: "POST",
url: url + "?" + action + "=" + id,
success: function(response) {
if(onSuccess !== null) {
onSuccess(response);
}
},
error: function(e) {
if(onError !== null) {
onError(e);
}
}
});
};
我的问题是我正在使用'POST'来表示Ajax请求,这是正确的,还是应该'PUT'?
我的控制器有一个默认的URL,我正在使用param属性来决定调用哪个方法,因为页面上有很多按钮。
@RequestMapping(params = "open", method = RequestMethod.POST)
@RequestMapping(params = "close", method = RequestMethod.POST)
我对这些电话使用'POST'并不适合我。也许它应该是'PUT'......
有什么建议吗?这有关系吗?
答案 0 :(得分:8)
PUT和POST都可以创建新记录; PUT还可以更新/更改现有记录。
POST和PUT之间的区别在于PUT应该使用它的ID来记录记录,以便服务器知道在创建(或更新)记录时要使用的ID,而POST期望服务器为其生成ID记录创建后将记录返回给客户端。
因此,POST作为集合发送到资源:POST /resource
,而PUT发送到集合中的单个项目:PUT /resource/1
答案 1 :(得分:7)
这取决于您的请求应该做什么。因此,没有一般规则你应该使用一个而不是另一个,它们有不同的用例。
用于创建记录的POST PUT 用于更新现有记录(或将记录放在指定位置/ ID) 有关定义,请参阅this wikipedia article。
需要注意的一点是,PUT应该是幂等,多次执行相同的PUT请求应理想地产生与执行单个PUT请求相同的结果。但是,POST不是幂等的,所以做几个POST请求应该(或将会)创建多个新记录。
因此,在阅读完之后,您应该检查您的方法的作用,并选择相应的请求方法。
答案 2 :(得分:1)
使用POST。始终使用POST,除非你绝对坚定地确定托管系统正确支持PUT。