Springboot은 GET와 POST 요청을 모두 지원하는 인터페이스 방법을 정의합니다.

1722 단어 Java 개발
@RequestMapping 주석은 GET, PUT, POST, DELETE, PATCH 등 HTTP 요청을 처리할 수 있는 방법을 설명합니다.
일반적으로 다음과 같이 씁니다.
@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})
참조 출처:https://www.oxingsoft.com/blog/article/19.html

좋은 웹페이지 즐겨찾기