post请求参数注解
post方法与get方法最大的一个区别就是post方法有消息体,消息体的格式会通过消息头中的content-type字段来定义。
post请求与get请求的区别
参考博客
一个post请求,消息体里的数据默认是 application/x-www-form-urlencoded 的格式接受键值对格式的参数,可以说自定义类型,还有json对象等。
其他还有,比如最常用的json格式——Content-Type=application/json
。
post接口编写时,参数前加上@RequestBody
注解,表示接收前端传递来的请求体中content-type不是默认的application/x-www-form-urlcoded的内容,如json字符串
格式的数据。
前端这么封装参数:
data: JSON.stringify({
"actiName":name
}),
postman测试时,这种参数需要写在body栏下的raw,拼成一个json格式。不然有org.springframework.web.HttpMediaTypeNotSupportedException
异常。
如果参数没有被该注解修饰,前端直接传json对象,此时,这样封装参数:
var data = {
customerName:customerName,
};
对于@RequestParam
(同时适用于get和post)修饰的参数是key-value里的参数,Spring将Request.getParameter()中的Key-Value参数Map转化成了参数@RequestParam修饰的基本类型数据或对象。
既可以写在postman的params栏,也可以写在body栏下的form-data( multipart/form-data,既可以上传文件等二进制数据,也可以上传表单键值对)或application/x-www-form-urlencode下
@RequestPart
修饰文件上传参数,是form-data类型。
ps:
如果参数前写了@RequestParam(xxx),那么前端必须有对应的xxx名字才行(不管其是否有值),如果没有xxx名的话,那么请求会出错,报400
如果参数前不写@RequestParam(xxx)的话,那么就前端可以有可以没有对应的xxx名字才行,如果有xxx名的话,那么就会自动匹配;没有的话,请求也能正确发送。
feign消费服务时,如果参数前什么也不写,那么会被默认是@RequestBody的 https://www.cnblogs.com/zhuhui-site/p/10088238.html