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

taehongkim496님의 프로필 이미지
taehongkim496

작성한 질문수

스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술

회원 웹 기능 - 조회

create 메서드 관련 질문드립니다.

작성

·

235

1

수업시간에 만들어본 create 메서드는 HTML form태그로 보낸 요청에 제대로 동작했습니다. 그래서 postman에서 요청을 보내도 잘 될거라 생각했습니다. 그런데 제대로 동작하지 않더라구요. 구글링을 해보니 파라미터에 @RequestBody 를 붙여야 한다는 내용을 찾았습니다. 따라하니까 제대로 동작하긴 하는데, HTML form을 통해 전달받는것과, 외부 api 테스팅 도구로 body에 값을 넣어서 전달하는게 어떤 차이가 있는지 궁금합니다. 더불어 @RequestBody가 어떤 역할을 하는지도 궁금합니다!

답변 3

1

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

김영한님 자세한 답변 감사합니다!

대부분의 api content-type이 application/json으로 되어있어서 그거만 있는 줄 알았는데 다양한 타입이 있었네요 ㅎㅎ

0

postman으로 보내는 것 성공했습니다 감사합니다

0

김영한님의 프로필 이미지
김영한
지식공유자

안녕하세요. taehongkim496님 좋은 질문입니다.

아마 postman에 보시면 Body 부분에 x-www-form-urlencoded라는 것이 있고, 또 raw라는 것이 있을꺼에요.

HTTP 요청에서 HTML의 form데이터를 보낼때는 content-type이라는 해더정보가 함께 넘어가는데 이때는 application/x-www-form-urlencoded 이라는 정보가 포함되어서 넘어갑니다.

그래서 html form 처럼 동작하려면 해당 옵션을 선택하시면 됩니다.

@RequestBody는 이름 그대로 HTTP 요청의 body 부분 데이터를 그대로 스프링에서 받고 싶을 때 사용합니다. 문자로 받을 수도 있고, JSON 같은 내용 객체로도 받을 수 있습니다.

POSTMAN에서는 raw를 선택하면 됩니다^^ 그러면 선택하는 추가 옵션에 따라 content-type에 text/plain, application/json으로 요청하게 됩니다.

이 부분에 대한 자세한 내용은 준비중인 실전! 스프링 웹 MVC 강의에서 매우 자세히 설명드릴께요^^

도움이 되셨길 바래요

taehongkim496님의 프로필 이미지
taehongkim496

작성한 질문수

질문하기