create 메서드 관련 질문드립니다.
353
작성한 질문수 1
수업시간에 만들어본 create 메서드는 HTML form태그로 보낸 요청에 제대로 동작했습니다. 그래서 postman에서 요청을 보내도 잘 될거라 생각했습니다. 그런데 제대로 동작하지 않더라구요. 구글링을 해보니 파라미터에 @RequestBody 를 붙여야 한다는 내용을 찾았습니다. 따라하니까 제대로 동작하긴 하는데, HTML form을 통해 전달받는것과, 외부 api 테스팅 도구로 body에 값을 넣어서 전달하는게 어떤 차이가 있는지 궁금합니다. 더불어 @RequestBody가 어떤 역할을 하는지도 궁금합니다!
답변 3
1
김영한님 자세한 답변 감사합니다!
대부분의 api content-type이 application/json으로 되어있어서 그거만 있는 줄 알았는데 다양한 타입이 있었네요 ㅎㅎ
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 강의에서 매우 자세히 설명드릴께요^^
도움이 되셨길 바래요
..
0
75
2
Unused property.....
0
99
2
project JDK is misconfigured
0
130
2
외부 API의 ID 타입(String/UUID)과 내부 도메인의 ID 타입(Long)이 불일치할 때의 설계 정석
0
82
2
단위/통합 테스트 버전충돌 문제
0
91
2
❗️springboot 4.0.2 버전 aspectj dependency 설정❗️
0
228
1
왜 컨트롤러는 변한게 없는데 새로 만든 html 파일이 뜨나요?
0
102
2
윈도우 build test오류 질문
1
102
2
테스트 관련 공부에 대한 조언을 얻고 싶습니다
0
98
2
테스트 실행 시 에러 질문
0
290
1
name을 통한 비교와 객체를 통한 비교
0
77
1
빌드 후 libs 없음
1
128
1
윈도우 gradlew.bat 에러
0
167
1
@PostMapping("/members/new")가 동작하지 않습니다
0
88
1
java static class와 kotlin class
0
77
1
스프링 DB연결
0
126
1
소요 시간
0
85
2
ddl.sql에 빨간 밑줄
1
101
2
welcome page 에러
0
180
3
잘 모르겠습니다.
0
163
2
fail을 똑같이 쳤는데 오류가 발생해요
0
156
2
index.html Welcome page
0
121
1
프로젝트 gradle-groovy ?
0
364
1
테스트코드 메서드명 한글
0
201
2





