출처입니다 : java - Use @RequestBody with optional body in latest Spring v4 - Stack Overflow
아래와 같은 메서드를 테스트로 URL 만 호출 시에 해당 Controller 메서드로 진입 전에 , 400 오류가 발생하면서
org.springframework.http.converter.HttpMessageNotReadableException: Required request body is missing:
이라는 메시지가 표시 되었습니다.
@RequestMapping(value="/v1/parameterTest.json")
public Object parameterTest(@RequestHeader HttpHeaders headers,@RequestBody Map<String,Object> requestBody, HttpServletResponse response, HttpServletRequest request, ModelMap model) throws Exception {
String methodName = String.format("[%s][%s]", CLASSNAME, new Exception().getStackTrace()[0].getMethodName());
LOGGER.error(String.format("%s Occurred", methodName));
ResTestObject resTestObject = null;
try {
// 1. Request로 받은 Body
//@RequestBody Map<String,Object> requestBody,
if(requestBody != null)
LOGGER.error(String.format("%s RequestBody=%s",methodName,requestBody ));
// 2. Sample Response 처리 진행
String smpResp = "{\"result_code\":\"0\",\"result_message\":\"SUCCEEDED\"}";
Gson gson = new GsonBuilder().create();
resTestObject = gson.fromJson(smpResp, ResTestObject.class);
} catch(Exception exception) {
LOGGER.error(methodName,exception);
}
return resTestObject;
}
위 메서드의 매개변수 @RequestBody Map<String,Object> requestBody 를
-> @RequestBody Optional<Map<string,object>> requestBody 로 변경 하니 ( Optional 키워드로 감싸주니 )
log4j error 레벨로 기록한 RequestBody도
RequestBody=Optional.empty 로 출력 되었습니다.
[RequestBody 존재 시에도 정상적으로 JSON Parameter의 Key , Value가 출력 된 것을 확인 하였습니다.]
'JAVA' 카테고리의 다른 글
[전자정부프레임워크3.9] 클라이언트에서 요청 시에 CORS 오류 발생 관련 처리 사항 (0) | 2021.12.01 |
---|---|
[AES 알고리즘] Input length must be multiple of 16 when decrypting with padded cipher 발생 시에 확인 해볼 사항 (0) | 2021.10.21 |
[JAVA] 문자열 길이 및 Byte 수 계산 (0) | 2021.08.23 |
[JAVA] 현재 TimeStamp 값 얻기 예제 (0) | 2021.08.23 |
MultipartHttpServletRequest 를 통한 업로드 된 multipart/form-data 파일 ContentType 확인 [MIME Type] (0) | 2021.08.17 |