技术要求:
(1)接口支持Map和JSON两种封装参数的形式;
(2)实体类中属性采用驼峰格式,而第三方请求时参数采用下划线格式;
(3)支持在Postman和浏览器中测试。
解决办法:
方法一:
在实体类中,每个属性的set方法由setPropertyName改为setProperty_name。同时接口方法形式如下:
image.png
优点:简单,一个方法就能支持GET和POST,同时GET和POST方法都支持Map和JSON封装参数
缺点:不符合Java编码规范,不够优雅
方法二:
由于方法一不符合编码规范,可以使用fastjson的@JsonProperty注解,加上分别以@RequestBody和@RequestParam注解的方法来响应POST和GET请求。代码片段如下:
实体类属性注解 入口方法注解
优点:结构清晰易懂
缺点:Map封装的参数只能用GET请求,而JSON封装的参数只能使用POST请求
方法三:
参考https://blog.csdn.net/wtopps/article/details/83791927这篇文章,采用原生的HttpServletRequest来捕捉请求参数。
优点:无需注解,容易理解
缺点:没有使用Spring Boot的内建机制,可能存在效率问题(没有验证过)
总的来说,如果是新项目,建议采用方法二,即Spring Boot提供的两个注解来分别处理Map和JSON封装参数的请求。
网友评论