微信公众号

Springboot 定义接口方法同时支持GET和POST请求

@RequestMapping 注解能够处理 HTTP 请求的方法, 比如 GET, PUT, POST, DELETE 以及 PATCH。

常用方式如下写法:

@RequestMapping(method = RequestMethod.GET)
String get() {
	return from get;
}

@RequestMapping(method = RequestMethod.DELETE)
String delete() {
	return from delete;
}

@RequestMapping(method = RequestMethod.POST)
String post() {
	return from post;
}

@RequestMapping(method = RequestMethod.PUT)
String put() {
	return from put;
}

如果接口方法,需要同时支持GET/POST两种请求方式,怎么办呢? 如下写法可以解决:

@RequestMapping(value = /test, method = {RequestMethod.GET,RequestMethod.POST})
@ResponseBody
public String test(HttpServletRequest request) {

	//遍历请求参数
	Set> set = showParams(request).entrySet();
	for (Map.Entry entry : set) {
		if (!entry.getKey().toString().equals(submit)) {
			log.info(param:{}={}, entry.getKey().toString(), entry.getValue().toString());
		}
	}
	return ok;
}

private Map showParams(HttpServletRequest request) {
	Map map = new HashMap();
	Enumeration paramNames = request.getParameterNames();
	while (paramNames.hasMoreElements()) {
		String paramName = (String) paramNames.nextElement();
		String[] paramValues = request.getParameterValues(paramName);
		if (paramValues.length == 1) {
			String paramValue = paramValues[0];
			if (paramValue.length() != 0) {
				map.put(paramName, paramValue);
			}
		}
	}
	return map;
}

关键是这一行:@RequestMapping(value = "/test", method = {RequestMethod.GET,RequestMethod.POST})

 

SpringBoot集成API文档工具Swagger 你的MySQL连接安全吗,使用SSL通信加密
微信公众号