package com.fullsee.integrated.middleware.controller;
import com.alibaba.fastjson.JSON; import com.fullsee.integrated.middleware.configuration.ServerConfig; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletRequest; import java.util.*;
/** * <li>文件名称: 题目名称</li> * <li>文件描述: 题目名称 功能描述</li> * <li>版权所有: 版权所有© 2005-2019</li> * <li>公 司: Fullsee</li> * <li>内容摘要: 无</li> * <li>其他说明:无</li> * <li>完成日期: 2020-07-07 13:55 </li> * <li>修改记录: 无</li> * * @author songyunbing * @version 产品版本 */ @RestController @RequestMapping("/api") public class ApiController extends BaseController{
@Autowired private ServerConfig serverConfig;
/** * 统一路由api,在原先的基础上加上2个参数,一个url,一个method,其他参数传递方式和原来一样即可 * 如:GET请求或者POST请求均可以:(适用于实际服务方式为GET请求) * http://localhost:8011/api?url=test/testGet&name=zhangsan&name=wangwu&passsowrd=123&method=GET * /api表示统一路由入口 * url=test/testGet表示实际访问服务地址,url前面不带/ * method=GET表示实际访问服务地址的方式,取值为POST,GET,PUT * &name=zhangsan&name=wangwu&passsowrd=123表示实际访问服务需要的参数 * &name=zhangsan&name=wangwu表示支持传数组方式,接收结果会根据name接收到一个数组[zhangsan,wangwu] * * POST请求(适用于实际服务方式为POST,PUT请求) * http://localhost:8011/api?url=test/testPost&method=POST * 传参如下: * { * "name":"zhangsan", * "age":20 * } * /api表示统一路由入口 * url=test/testGet表示实际访问服务地址,url前面不带/ * method=GET表示实际访问服务地址的方式,取值为POST,GET,PUT * {"name":"zhangsan","age":20}表示实际访问服务需要的参数 * 注意POST方式参数传递分2部分,url,method和参数json参数体 * @param request * @return */ @PostMapping(produces = "application/json;charset=UTF-8") public Map<String, Object> doPost(HttpServletRequest request) { StringJoiner sj = new StringJoiner(":", "http://", "/"); sj.add("127.0.0.1"); sj.add(Optional.ofNullable(serverConfig.getPort()).map(x->x.toString()).orElse("8011")); String baseUrl = sj.toString(); Map<String,String[]> params = request.getParameterMap(); Map<String,Object> resultMap; if(params.get("url") != null && params.get("method") != null) { String method = params.get("method")[0]; String str = null; if (method.equalsIgnoreCase(RequestMethod.POST.toString())) { str = handlePost(baseUrl,request); }else if(method.equalsIgnoreCase(RequestMethod.GET.toString())){ str = handleGet(baseUrl,request); }else if(method.equalsIgnoreCase(RequestMethod.PUT.toString())) { str = handlePut(baseUrl,request); } resultMap = JSON.parseObject(str,Map.class); }else{ resultMap = new HashMap<>(); resultMap.put("code",1); resultMap.put("msg","url或method参数缺失"); } return resultMap; } @GetMapping(produces = "application/json;charset=UTF-8") public Map<String, Object> doGet(HttpServletRequest request) { return doPost(request); }
} |