Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ajax请求,应该是POST还是PUT_Ajax_Jquery_Spring Mvc - Fatal编程技术网

Ajax请求,应该是POST还是PUT

Ajax请求,应该是POST还是PUT,ajax,jquery,spring-mvc,Ajax,Jquery,Spring Mvc,我已经创建了一个Spring MVC web应用程序 应用程序会向控制器打几个电话。这些呼叫是接近/打开/结束游戏 我使用Ajax进行这些调用,因此我可以处理页面顶部的响应 ajaxPost = function (url, action, id, onSuccess, onError) { $.ajax({ type: "POST", url: url + "?" + action + "=" + id, success: fu

我已经创建了一个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);
            }                           
       }                
    });
};
@RequestMapping(params = "open", method = RequestMethod.POST)

@RequestMapping(params = "close", method = RequestMethod.POST)
我的问题是,我正在对Ajax请求使用“POST”,这是正确的,还是应该使用“PUT”

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

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);
            }                           
       }                
    });
};
@RequestMapping(params = "open", method = RequestMethod.POST)

@RequestMapping(params = "close", method = RequestMethod.POST)
我对这些电话使用“POST”并不满意。也许它应该是“放”


有什么建议吗?这有关系吗?

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

发布以创建记录。
PUT用于更新现有记录(或将记录放在指定位置/id)。
有关定义,请参见

需要注意的一点是,PUT应该是幂等的,多次执行相同的PUT请求在理想情况下应该产生与执行单个PUT请求相同的结果。但是,POST不是幂等的,所以执行几个POST请求应该(或将)创建多个新记录


因此,阅读本文后,您应该检查您的方法的作用,并选择相应的请求方法。

使用POST。始终使用POST,除非您绝对确信您的主机系统正确支持PUT。

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

POST和PUT之间的区别在于,PUT需要使用记录的ID对记录进行寻址,以便服务器知道在创建(或更新)记录时使用哪个ID,而POST需要服务器为记录生成一个ID,并在创建记录后将其返回给客户机


因此,POST作为集合发送给资源:
POST/resource
,而PUT则发送给集合中的单个项目:
PUT/resource/1
,我想在这种情况下我应该使用POST,因为多个“close”语句将导致不同的结果,因为第一次调用将“close”游戏,后续调用将导致错误。所以不是幂等的。