为什么要采用测试接口的方式:贴完代码我再来说;
1.贴张图片
2.是测试接口地址的暴露方式:
@Controller
public class ApiTestController {
@Value("${epeit.api.server}")
private String defaultApiServer;
@Value("${epeit.api.id}")
private String defaultApiId;
@Value("${epeit.api.secert}")
private String defaultApiSecret;
@RequestMapping(value = "/apitest")
public String apitest(ModelMap modelMap) {
modelMap.addAttribute("defaultApiServer", defaultApiServer);
modelMap.addAttribute("defaultApiId", defaultApiId);
modelMap.addAttribute("defaultApiSecret", defaultApiSecret);
modelMap.addAttribute("functionCodeCatalogMap", SpringBeanProxy.getFunctionCodeCatalogMap());
modelMap.addAttribute("functionCodeListMap", SpringBeanProxy.getFunctionCodeListMap());
return "/apitest";
}
@SuppressWarnings("rawtypes")
@RequestMapping(value = "/doApiTest")
public String doApiTest(HttpServletRequest req, HttpServletResponse rsp, @RequestParam String apiServer) {
Map<String, Object> paramMap = new HashMap<String, Object>();
Enumeration em = req.getParameterNames();
while (em.hasMoreElements()) {
String name = (String) em.nextElement();
if ("apiServer".equals(name) || "apiSecret".equals(name) || "t".equals(name) || "paramName".equals(name) || "paramValue".equals(name)) {
continue;
}
String value = req.getParameter(name);
paramMap.put(name, value);
}
String secreyKey = req.getParameter("apiSecret");
String token = SimpleTokenUtil.buildToken(paramMap, secreyKey);
String[] paramNameArr = req.getParameterValues("paramName");
String[] paramValueArr = req.getParameterValues("paramValue");
if (paramNameArr != null && paramNameArr.length > 0) {
int n = 0;
for (String paramName : paramNameArr) {
if (paramName != null && !"".equals(paramName.trim())) {
paramMap.put(paramName, paramValueArr[n]);
}
n++;
}
}
paramMap.put("debug", "true");
paramMap.put("token", token);
String retJson = HttpClientUtil.doHttpPost(apiServer + "/apicenter", paramMap);
return WebHelper.outputJson(retJson, rsp);
}
}3. 请求参数:
{apiId=weizhan, functioncode=jdpush.selectJpushList, token=f45428f33e324d966c5e53d7aaba8eb3}
functioncode:会在我在前面提到的map中找到对应的接口地址,并调用;
4.控制台打印结果:
5.采用什么方式给APP端送回消息:非常之常规的PrintWriter方式,打印输出;
public static String output(String str, HttpServletResponse response, String contentType) {
response.reset();
response.setCharacterEncoding("UTF-8");
response.setContentType("text/html;charset=UTF-8");
try {
PrintWriter out = response.getWriter();
out.print(str);
out.flush();
out.close();
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
本文介绍了通过测试接口的方式来实现API的统一接入,重点讲解了如何在Spring项目中集成SpringMVC进行接口开发。文中展示了测试接口的地址暴露方式,通过`functioncode`在映射中查找对应接口并调用,控制台显示调用结果,最后使用常见的PrintWriter方法将响应返回给APP端。
 spring集成springMVC开发统一接入API--实现test接口&spm=1001.2101.3001.5002&articleId=51190910&d=1&t=3&u=cc6e72bb0b344099a540313db475d015)
1755

被折叠的 条评论
为什么被折叠?



