- 멱등성 : 몇번의 요청을 해도 같은 대답이 돌아오는가?
- DataBody : DataBody에 data를 실어서 보내기 때문에 굳이 QueryParameter로 데이터를 보낼 필요는 없다.
- 생성된 것을 조회하기 때문에 굳이 QueryParameter를 사용하지 않는다.
데이터를 주고 받을 때
현업의 API는 주로 JSON 사용!
<JSON의 형태>
{
"key" : "value"
}
<JSON 데이터의 value 값으로 들어갈 수 있는 타입>
string : value,
number : value,
boolean : value,
object : value -> { }로 묶임,
array : value -> [ ]로 묶임. 안의 값은 같은 값의 반복이어야 함
<JSON 규칙>
- 스네이크 케이스 : 단어의 구별마다 언더바 쓰기
- 카멜 케이스
코드를 작성하고 POST 요청을 보냈더니 인텔리제이 콘솔에 아무것도 찍히는 것이 없다.
그 이유는 인자로 받는 변수 타입 앞에 어노테이션을 빠뜨렸기 때문
http post로 요청을 보낼 때, body에 Data를 심었다고 하기 때문에 @RequestBody를 앞에 붙여줘야함
@RequestBody 어노테이션을 통해 JSON data를 파싱할 수 있음
하지만, 어떤 값을 보낼 지 미리 다 알아야 하는데
Map으로 받기엔 힘들다
그래서 PostRequestDto 패키지와 java파일을 만들어주고,
받아야 할 변수들 선언, 각 Getter/Setter 만들어주고
toString을 오버라이딩한다
PostRequestDto에서는 요청하는 JSON의 키에 해당하는 값들이 변수로 선언되어야 한다.
우리는 카멜케이스로 데이터를 받고 싶지만,
만약 보내는 쪽에서 스네이크케이스로 데이터를 보낸다면?
ObjectMapper로 오브젝트가 텍스트가 바뀌는 기능이 있는데 이런 방법으로 따로 지정해주지 않으면 못찾음
스네이크 케이스로 JsonProperty를 가질 것이라고 명시해주면 됨
하나하나 달아줘야 하는 단점이 있지만 특정 이름에 대해 매칭이 가능함
카멜 케이스도 스네이크 케이스도 아닌 대문자 Key값 등 정해진 방식이 아닌 값을 보내와도
이러한 방법 JsonProperty 방법을 사용하면 됩니다
<어노테이션 정리>
PathVariable도 기존의 Get방식과 똑같이 사용하면 된다
JsonNaming으로 일괄적으로 카멜 케이스, 스네이크 케이스를 설정해줄 수 있지만 다음 시간에
'Spring' 카테고리의 다른 글
Spring Boot REST API_DELETE Method (0) | 2022.04.19 |
---|---|
Spring Boot REST API_PUT Method (0) | 2022.04.18 |
Spring Boot REST API_Get Method (0) | 2022.03.22 |
WEB 개발 개론 (0) | 2022.03.09 |
CH02.디자인 패턴 (0) | 2022.03.08 |