restful规范下的ajax请求
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了restful规范下的ajax请求相关的知识,希望对你有一定的参考价值。
restful 四种请求
get是安全(不管操作多少遍,资源的状态不会变)的,
get,delete,put是幂等(不管操作多少次,结果都一样)的,
post既不安全也不幂等
put与post比较:增加操作可以使用POST或PUT,区别在于POST 是作用在一个集合资源之上的(/uri),而PUT操作是作用在一个具体资源之上的(/uri/xxx),再通俗点说,如果URL可以在客户端确定,那么就使用PUT,如果是在服务端确定,那么就使用POST,比如说很多资源使用数据库自增主键作为标识信息,而创建的资源的标识信息到底是什么只能由服务端提供,这个时候就必须使用POST。
restful ajax发送请求
客户端:
关于contentType
默认application/x-www-form-urlencoded
除默认,常见的还有:
contentType: "application/json; charset=utf-8", contentType: "text/xml",
关于get,post,put,delete请求
发送get请求,上面提到的三种方式都可以,因为get方式,参数是跟在url后边,与Content-Type无关。
其它请求,就要考虑contentType,设置相应的值了。
关于data
当有大量参数,可以包装成json格式,通过JSON.stringify()将其序列化进行传输
例如:data:JSON.stringify(paramObject),//传递json字符串做参数,将来在controller中用@RequestBody接收
如下:
var paramObject = {
"login_name":login_name,
"nick_name":nick_name,
"real_name":real_name,
"email":email
};
//发送Ajax请求
$.ajax({
url:"http://localhost:8888/spring5/user/"+id,
type:"put",
contentType:"application/json",//指定传递新的类型为json
data:JSON.stringify(paramObject),//传递json字符串做参数,将来在controller中用@RequestBody接收
dataType:"json",
success:function(result){
if(result.status==1){//成功
window.parent.location.reload();//刷新父窗口
}else{
layer.msg(result.msg);//提示失败
}
}
});
服务端
@ResponseBody//将返回的Java对象转成JSON字符串输出 将请求传过来的JSON字符串转成Java对象
需要明白的是:其实2.对资源的增,删,改,查操作,其实都可以通过GET/POST完成,不需要用到PUT和DELETE。但不符合rest规范
以上是关于restful规范下的ajax请求的主要内容,如果未能解决你的问题,请参考以下文章
jQuery封装的ajax方法发送jsonp请求ajax全局事件restful风格的api获取XML数据
跨域 jQuery Ajax 请求和 WCF REST 服务
让python bottle框架支持jquery ajax的RESTful风格的PUT和DELETE等请求