maven 项目(五) spring集成springMVC开发统一接入API--实现test接口

本文介绍了通过测试接口的方式来实现API的统一接入,重点讲解了如何在Spring项目中集成SpringMVC进行接口开发。文中展示了测试接口的地址暴露方式,通过`functioncode`在映射中查找对应接口并调用,控制台显示调用结果,最后使用常见的PrintWriter方法将响应返回给APP端。


为什么要采用测试接口的方式:贴完代码我再来说;

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;
	}





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值