postman
Postman
是一款功能强大的网页调试与发送网页HTTP
请求的软件,能模拟前端请求的发送
对于postman
发送请求的方式,有下图的这几种(下面我们主要挑四个常用的说说)
1.form-data
就是我们上传文件时使用的multipart/form-data
,它将表单的数据组织成Key-Value
形式,用分隔符boundary
将表单的数据处理成一条消息。这种方式的数据发送,所以既可以上传文件,也可以上传参数,只能是POST
请求。(分割方式如下图)
用postman
模拟请求的发送
在js
文件中获取表单中的数据(包含文件),用ajax
技术发送到后台中
// $("#shop-img")[0]把jQuery对象转换成javascript对象,.files[0]表示可能上传多个文件,获取第一个文件流
var shopImg = $("#shop-img")[0].files[0];//获取文件
// 把shop信息和shopImg文件流存进FormData中,FormData是手动创建的表单,以key/value的形式传到后台中,可以通过request获取
// value可以是字符串、File、Blob,如果不是File和Blob会自动转换成字符串
var formData = new FormData();
formData.append("name", "张三");
formData.append("shopImg", shopImg);
$.ajax({
url : isEdit?modifyShopUrl:registerShopUrl,
type : 'POST',
// 不设置内容类型
contentType : false,
// 如果要发送 DOM 树信息或其它不希望转换的信息,请设置为 false。默认情况下,
// 通过data选项传递进来的数据,如果是一个对象(技术上讲只要不是字符串),都会处理转化成一个查询字符串
processData : false,
cache : false,
data : formData,
dataType : "json",
success : function(data) {
//处理返回的数据
})
});
注意
在使用了springmvc
的项目中,如果需要使用form-data
(即multipart/form-data
)上传数据,那么一定要配置文件解析器。
2.x-www-form-urlencodeed
就是application/x-www-from-urlencoded
(我们平常使用最多的表单上传,其中不包含文件上传项),会将表单内的数据转换为键值对,可以是GET请求,也可以是POST请求。
用postman
模拟请求的发送
在js
文件中获取表单中的数据(不包含文件),用ajax
技术发送到后台中
//用js对象或者josn对象封装数据,再通过ajax技术传到后台中,其实就等同于传一个个键值对
$(function () {
var obj={};
obj.name=$("name").val();//obj.name="张三";
$.ajax({
url: "/param/test1",
type:"POST",
contentType:"application/x-www-form-urlencoded",
data:obj,//obj={name="张三"}
dataType:"json",
success:function(data){
}
})
})
3.raw
可以上传任意格式的文本,可以上传text
、json
、xml
、html
等。但我们使用最多的是发送json
字符串,传输时content-type
为application/json
。
用postman
模拟请求的发送
在js
文件中获取表单中的数据,用ajax
技术发送到后台中
//用js对象或者josn对象封装数据,再转换成json字符串,通过ajax技术传到后台中
$(function () {
var obj={};
obj.name="张三";
obj.age=10;
$.ajax({
url: "/param/test1",
type:"POST",
contentType:"application/json",//contentType必须为application/json
data:JSON.stringify(obj),//把json对象转换为json字符串
dataType:"json",
success:function(data){
}
})
})
注意
如果后台使用springmvc
来接收数据,那么参数必须用@RequestBody
标识,并且参数类型必须为实体类或者Map
集合。
@RequestMapping(value = "/test1", method = RequestMethod.POST)
@ResponseBody
private String Test1(@RequestBody User user) {
System.out.println(user);
return "success";
}
4.binary
相当于content-type:application/octet-stream
,从字面意思得知,只可以上传二进制数据,通常用来上传文件,由于没有键值,所以,一次只能上传一个文件。