HTTP 메소드중하나인 REST API를 구현할 수 있는 방법 중 두번째 POST방식에 대해서 알아보고자한다.
- POST방식은 리소스 생성 및 추가에 사용한다. 데이터를 계속해서 변화시키기때문에 멱등성과 안정성은 없다.
- Path Variable형태가 가능하며 Query Parameter는 가능하지만 특정 데이터에 필터링을 위해 사용되기때문에 적절하지는 않다.
-DataBody를 가지고 있어 대표적으로 이것을 사용하는 방식이라 말할 수 있다.
HTTP Header와 HTTP Boody로 구분되면서 HTTP Boody에 메세지를 담아서 보낼 수 있다.
메세지는 문자로 TEXT,HTML,JSON...과 같은 것들이 해당된다.
앞서 GET방식에서 배웠던 URL에 담아서 데이터를 보내는 형태는 주소가 외부로 노출되거나 저장될 수있지만, 해당 방식은 HTTP Boody에 담아서 서버에 보낼 경우에는 외부주소에는 노출되지않아 좀 더 안전하다고 말할 수 있다.
1. post형식으로 받아올 데이터들을 만들어준다.
2. @RequestBody를 통해서 /post경로에 들어오는 데이터를 위에서 만든 dto에 담아준다.
해당 결과를 확인하기위해 저는 postman을 사용했습니다!.
3. URL을 입력해주고 SpringBoot는 기본적으로 json형태의 데이터를 받아온다.
이에 JSON형태로 Key : value 쌍을 이뤄서 send해주면 다음과 같이 출력된다.
여기서 JSON을 표현하는 방식으로 몇가지가 존재하는데
대표적으로 snake case, camel case이다.
1. Camel Case
단어가 합쳐진 부분마다 맨 처음 글자를 대문자로 표기하는 방법이며, 두 개 이상의 단어가 모인 합성어에서 사용된다. (쌍봉낙타의 등과 닮았다고 하여 CamelCase라는 이름이 붙여졌다고한다.)
2. Snake case
snake_case란 단어가 합쳐진 부분마다 중간에 언더라인을 붙여 주는 방법이며, 일반적으로는 언더라인을 사용하나, 언더라인 대신 하이픈(-)을 써도 snake-case라고 할 수 있다.
예제 - userName으로 dto를 생성하였는데, 만일 user_name으로 데이터가 들어왔다면 ?!
위에서 실습한 내용과 같이 알맞는 키와 밸류로 서버에 잘 전달된것을 볼 수 있다.
여기서 key의 이름을 Camel case아닌 Snake case로 보낸다면
해당값을 찾지못하게된다.
@JsonNaming 활용
각 변수에 @JsonProperty를 붙여줘도 되지만, 필드가 많은 경우 하나하나 써주다간 코드가 불필요하게 길어지게된다.
이럴때 사용하는 것이 좋다. 현재는 PropertyNamingStrategy 가 사라지고 PropertyNamingStrategies 로 사용한다고한다
다시 데이터를 Snake case보내도 잘 맵핑되는걸 볼 수 있다.
참고
'java > spring, springBoot' 카테고리의 다른 글
스프링부트(SpringBoot) - REST -GET 사용해보기 (1) | 2023.10.13 |
---|---|
스프링부트(SpringBoot) 시작하기 - Spring Initializr (0) | 2023.10.12 |
스프링(Spring) - 시작해보기(java->spring변환) (0) | 2021.08.31 |
스프링(Spring) - 프로젝트 생성해보기 (0) | 2021.08.31 |
스프링(Spring) -스프링 프레임워크 (0) | 2021.08.31 |