작성
·
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
이 발생합니다 ^^
참고)
감사합니다.
네, 맞습니다! GetMapping은 @RequestParam으로 QueryString으로 /School?FIRSTNAME=KIM&AGE=30 첨부하신 예시와 같이 작성하면 @RequestParam오른쪽에 작성하는 변수에 바인딩 됩니다 :)
답변 감사드립니다.
그럼 GetMapping은 @RequestParam 으로 받으면 될까요?
보내는 화면 쪽에서 /School?FIRSTNAME=KIM&AGE=30 이렇게 URL에 JASON 값을 보내는 방식도 있다고 하는데 이런 경우 받는 백앤드 Spring API 에서는 값을 어떻게 받을 수 있을까요?