인프런 커뮤니티 질문&답변

tjam1723님의 프로필 이미지
tjam1723

작성한 질문수

실전! 스프링 부트와 JPA 활용2 - API 개발과 성능 최적화

GetMapping에서 Required request body is missing 에러

작성

·

7.6K

0

안녕하세요

UI와 GetMapping API 테스트를 하는데 로컬에서 테스트 할 때는 잘 되는데

API 테스트를 하면 아래와 같이 Required request body 에러가 뜹니다.

Client에서 보낸 JSON데이터를 로컬에서 테스트 하면 잘 되는데

GetMapping 만 쓰는 API에서는 @RequestBody 가 안되는걸까요..?

(비슷한 내용의 코드인데 GetMapping, PUTMapping, POSTMapping이 있는 API에서는 또 잘되고 있어서 이런의문점이 듭니다.)

아래 코드와 에러 내용 드립니다.

 

. 코드 (Parameter 명과 Class명 수정했습니다.)

@Slf4j

@RestController

@RequestMapping(value = "/", method = RequestMethod.GET)

public class SchoolController {

@Autowired

ClassService cs;

 

@GetMapping("/School")

public List<Event> School(

@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")

@RequestBody Class class ) throws Exception {

List<Class> ClassList = new ArrayList<Class>();

ClassListt = cs.selectClassBySearchCriteria(class.getId(), class.getName(), class.getCreateTime(), class.getUpdateTime());

}

 

. 에러내용

Resolved [org.springframework.http.converter.HttpMessageNotReadableException: Required request body is missing: public java.util.List<mes.sdc.mads.vo.Event> mes.sdc.mads.controller.DetectionController.anomalyEvent(mes.sdc.mads.vo.Event,org.springframework.ui.Model) throws java.lang.Exception]

답변 1

1

안녕하세요. tjam1723님, 공식 서포터즈 OMG입니다.

스프링에서는 @GetMapping 으로 Http Message Body 처리를 위한 @RequestBody 사용이 불가합니다

@GetMapping이 아닌, Post혹은 Put을 사용해주세요 :)

질문에서와 아래 링크를 보시면 확인이 가능하듯 HttpMessageNotReadableException 이 발생합니다 ^^

참고)

https://stackoverflow.com/questions/42256358/spring-getmapping-with-requestparam-and-requestbody-fails-with-httpmessagenot

감사합니다.

tjam1723님의 프로필 이미지
tjam1723
질문자

답변 감사드립니다.

그럼 GetMapping은 @RequestParam 으로 받으면 될까요?

보내는 화면 쪽에서 /School?FIRSTNAME=KIM&AGE=30 이렇게 URL에 JASON 값을 보내는 방식도 있다고 하는데 이런 경우 받는 백앤드 Spring API 에서는 값을 어떻게 받을 수 있을까요?

네, 맞습니다! GetMapping은 @RequestParam으로 QueryString으로 /School?FIRSTNAME=KIM&AGE=30 첨부하신 예시와 같이 작성하면 @RequestParam오른쪽에 작성하는 변수에 바인딩 됩니다 :)

 

tjam1723님의 프로필 이미지
tjam1723

작성한 질문수

질문하기