主要用到两个注解:@PostMapping(value={"/xxx"},produces = MediaType.APPLICATION_JSON_VALUE)
- produces=MediaType.APPLICATION_JSON_VALUE:表示将生产json格式的数据,此时根据请求头中的Accept进行匹配,如请求头“Accept:application/json”时即可匹配
- value={"/xxx"}:表示接口的地址
@ResponseBody
然后是接口方法体:public String renamePrefix(@RequestBody @NotEmpty String data) {}
用到两个注解:
@RequestBody
:以请求体的方式发起请求,只能使用Post方式请求,因为Get没有请求体。Get可以使用@RequestParam
注解,以传入参数的方式发起请求@NotEmpty
:使传进来的数据不能为空
然后用Map做一个传进来的json格式的数据解析,解析成我们想要的数据,例如此处我们需要传入source、prefix两个数据,那么就在后台解析出来
Map<String, String> paramMap = new Gson().fromJson(data, Map.class);
String source = paramMap.get("source");
String prefix = paramMap.get("prefix");
如果后端参数是一个对象,且该参数前是以@RequestBody修饰的,那么前端传递json参数时,必须满足以下要求:
- 后端@RequestBody注解对应的类在将HTTP的输入流(含请求体)装配到目标类(即:@RequestBody后面的类)时,会根据json字符串中的key来匹配对应实体类的属性,如果匹配一致且json中的该key对应的值符合(或可转换为),实体类的对应属性的类型要求时,会调用实体类的setter方法将值赋给该属性。
- json字符串中,如果value为"“的话,后端对应属性如果是String类型的,那么接受到的就是”",如果是后端属性的类型是Integer、Double等类型,那么接收到的就是null。
- json字符串中,如果value为null的话,后端对应收到的就是null。
如果想要传递一个空值的时候可以以这种形式传参:
-
{“xxxx”:""}
或者{“xxxx”:null}
- 不可以不传值:
{"xxxx":}
这种写法是错误的