主要用到两个注解:
@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":}这种写法是错误的