前言
当我们使用开发者工具的时候,看具体某个操作调用的什么接口,传入了什么参数等信息。如果我们想在本地模拟的时候,需要postman 模拟参数然后调用接口,这时候就需要了解怎么合理的传入参数了。
1、Content-type的类型
讲传值之前,先讲下Content-type的类型
-
1、application/x-www-form-urlencoded
1)浏览器的原生form表单
2) 提交的数据按照 key1=val1&key2=val2 的方式进行编码,key和val都进行了URL转码 -
2、multipart/form-data
常见的 POST 数据提交的方式。我们使用表单上传文件时,必须让 form 的 enctype 等于这个值。
<form action="/" method="post" enctype="multipart/form-data">
<input type="text" name="description" value="some text">
<input type="file" name="myFile">
<button type="submit">Submit</button>
</form>
-
3、application/json
消息主体是序列化后的 JSON 字符串,这个类型越来越多地被大家所使用.这种方案,可以方便的提交复杂的结构化数据,特别适合RESTful 的接口 -
4、text/xml
是一种使用 HTTP 作为传输协议,XML 作为编码方式的远程调用规范
2、request payload
参考资料:https://segmentfault.com/a/1190000018774494(写的很好,因为我现在对于这方面知识使用不多也不深,所以只泛泛说下,后续若有新的见解再补上)
Request Payload更准确的说是http request的payload body。一般用在数据通过POST请求或者PUT请求。它是HTTP请求中空行的后面那部分。(PS:这里涉及一个http常被问到的问题,http请求由哪几部分组成,一般是请求行,请求头,空行,请求体。payload body应该是对应请求体。)
区别就是,他们只是因为Content-Type设置的不同,并不是数据提交方式的不同,这两种提交都会将数据放在message-body中。但是chrome浏览器的开发者工具会根据这个ContentType区分显示方式。
3、postman传参
map和list类似 故这里直说map这一种
1、
我这边写了个测试的Controller来测试这个方法
@RequestMapping(value = "/testPara",method = RequestMethod.POST)
@ResponseBody
public String testHive(@RequestBody Map<Integer,String> map) {
for (Map.Entry<Integer, String> entry : map.entrySet()) {
System.out.println("==========");
System.out.println("Key = " + entry.getKey() + ", Value = " + entry.getValue());
System.out.println("==========");
}
return "sucess";
}
这里注意:
@RequestBody主要用来接收前端传递给后端的json字符串中的数据的(请求体中的数据的);GET方式无请求体,所以使用@RequestBody接收数据时,前端不能使用GET方式提交数据,而是用POST方式进行提交。在后端的同一个接收方法里,@RequestBody与@RequestParam()可以同时使用,@RequestBody最多只能有一个,而@RequestParam()可以有多个。
2、
打开postman,顺序执行一下3步操作即可,如图所示
1、选择请求方式,填入URL
2、切到Header,填写一对键值,key:Content-Type,value:application/json
3、切到Body,选择raw,后面选择"JSON(application/json)",内容框写Map的json串格式
image.png
image.png
网友评论