Ajax请求,应该是POST还是PUT

use*_*190 4 ajax jquery spring-mvc

我创建了一个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);
            }                           
       }                
    });
};
Run Code Online (Sandbox Code Playgroud)

我的问题是我正在使用'POST'来表示Ajax请求,这是正确的,还是应该是'PUT'?

我的控制器有一个默认的URL,我正在使用param属性来决定调用哪个方法,因为我在页面上有很多按钮.

@RequestMapping(params = "open", method = RequestMethod.POST)

@RequestMapping(params = "close", method = RequestMethod.POST)
Run Code Online (Sandbox Code Playgroud)

我正在使用'POST'进行这些调用,这对我来说并不合适.也许它应该是'PUT'......

有什么建议?有关系吗?

Ygg*_*Ygg 8

PUT和POST都可以创建新记录; PUT还可以更新/更改现有记录.

POST和PUT之间的区别在于PUT应该使用它的ID来记录记录,以便服务器知道在创建(或更新)记录时使用什么ID,而POST期望服务器为记录生成ID并且创建记录后将其返回给客户端.

因此,POST作为集合发送到资源:POST /resource,而PUT发送到集合中的单个项目:PUT /resource/1


Mat*_*ann 7

这取决于您的要求应该做什么.因此,没有一般规则,你应该使用一个而不是另一个,它们有不同的用例.

用于创建记录的POST.
PUT用于更新现有记录(或将记录放在指定位置/ id).
有关定义,请参阅此维基百科文章.

需要注意的一点是,PUT应该是幂等的,多次执行相同的PUT请求应理想地产生与执行单个PUT请求相同的结果.但是,POST不是幂等的,因此执行多个POST请求应该(或将)创建多个新记录.

因此,在阅读完之后,您应该检查您的方法的作用,并选择相应的请求方法.