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<Map.Entry<String, String>> set = showParams(request).entrySet();

	for (Map.Entry<String,String> 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通信加密
微信公众号