[SPRING] Spring rest controller에서 일반 json body에 액세스하는 방법은 무엇입니까?
SPRINGSpring rest controller에서 일반 json body에 액세스하는 방법은 무엇입니까?
다음 코드가 있습니다.
@RequestMapping(value = "/greeting", method = POST, consumes = APPLICATION_JSON_VALUE, produces = APPLICATION_JSON_VALUE)
@ResponseBody
public String greetingJson(@RequestBody String json) {
System.out.println("json = " + json); // TODO json is null... how to retrieve plain json body?
return "Hello World!";
}
String json 인수는 json이 본문으로 전송 되더라도 항상 null입니다.
필자는 자동 유형 변환을 원하지 않는다는 것을 유의하십시오.
예를 들면 다음과 같습니다.
@RequestMapping(value = "/greeting", method = POST, consumes = APPLICATION_JSON_VALUE, produces = APPLICATION_JSON_VALUE)
@ResponseBody
public String greetingJson(@RequestBody User user) {
return String.format("Hello %s!", user);
}
아마 나는 실제 Body를 검색하기 위해 인수로 ServletRequest 또는 InputStream을 사용할 수 있지만 더 쉬운 방법이 있는지 궁금해할까요?
해결법
-
==============================
1.지금까지 찾은 가장 좋은 방법은 다음과 같습니다.
지금까지 찾은 가장 좋은 방법은 다음과 같습니다.
@RequestMapping(value = "/greeting", method = POST, consumes = APPLICATION_JSON_VALUE, produces = APPLICATION_JSON_VALUE) @ResponseBody public String greetingJson(HttpEntity<String> httpEntity) { String json = httpEntity.getBody(); // json contains the plain json string
다른 대안이 있다면 알려줘.
-
==============================
2.너는 단지 사용할 수있다.
너는 단지 사용할 수있다.
@ RequestBody String pBody
-
==============================
3.HttpServletRequest 만 나를 위해 일했습니다. HttpEntity는 null 문자열을 제공합니다.
HttpServletRequest 만 나를 위해 일했습니다. HttpEntity는 null 문자열을 제공합니다.
import java.io.IOException; import javax.servlet.http.HttpServletRequest; import org.apache.commons.io.IOUtils; @RequestMapping(value = "/greeting", method = POST, consumes = APPLICATION_JSON_VALUE, produces = APPLICATION_JSON_VALUE) @ResponseBody public String greetingJson(HttpServletRequest request) throws IOException { final String json = IOUtils.toString(request.getInputStream()); System.out.println("json = " + json); return "Hello World!"; }
-
==============================
4.나를 위해 일하는 가장 간단한 방법은
나를 위해 일하는 가장 간단한 방법은
@RequestMapping(value = "/greeting", method = POST, consumes = MediaType.ALL_VALUE, produces = MediaType.APPLICATION_JSON_UTF8_VALUE) @ResponseBody public String greetingJson(String raw) { System.out.println("json = " + raw); return "OK"; }
from https://stackoverflow.com/questions/17866996/how-to-access-plain-json-body-in-spring-rest-controller by cc-by-sa and MIT license
'SPRING' 카테고리의 다른 글
[SPRING] JSR-303 유효성 검사 그룹은 기본 그룹을 정의합니다. (0) | 2019.05.30 |
---|---|
[SPRING] iBatis, spring, 실행되는 SQL을 어떻게 로그합니까? (0) | 2019.05.29 |
[SPRING] @PostConstruct 주석 및 스프링 수명주기 (0) | 2019.05.29 |
[SPRING] 스트럿을 사용하여 봄에 선택한 메뉴 강조 표시 (0) | 2019.05.29 |
[SPRING] 행렬 매개 변수로 GET 요청 만들기 (0) | 2019.05.29 |