最近重写个项目遇到个比较棘手的问题,老项目是 PHP 接口,这个接口同时兼容 POST json 和 form 表单,更骚的是连 form-data
也兼容。。。因为写 PHP 请求的对接方代码不严谨。
而在 Java 中,一个接口只支持一种 content-type
,json 就用 @RequestBody
,form 表单就用 @RequestParam
或不写,form-data
就用 MultipartFile
。
兼容版本
如果要把在一个接口中同时兼容三种,比较笨的办法就是获取 HttpServletRequest
,然后自己再写方法解析。类似如下:
private Map<String, Object> getParams(HttpServletRequest request) {
String contentType = request.getContentType();
if (contentType.contains("application/json")) {
// json 解析...
return null;
} else if (contentType.contains("application/x-www-form-urlencoded")) {
// form 表单解析 ...
return null;
} else if (contentType.contains("multipart")) {
// 文件流解析
return null;
} else {
throw new BizException