Burninghering's Blog
article thumbnail
Published 2022. 4. 12. 21:39
Spring Boot REST API_POST Method Spring

  • 멱등성 : 몇번의 요청을 해도 같은 대답이 돌아오는가?
  • DataBody : DataBody에 data를 실어서 보내기 때문에 굳이 QueryParameter로 데이터를 보낼 필요는 없다.
  • 생성된 것을 조회하기 때문에 굳이 QueryParameter를 사용하지 않는다.

데이터를 주고 받을 때

현업의 API는 주로 JSON 사용!

 

<JSON의 형태>

{
	"key" : "value"
}

 

<JSON 데이터의 value 값으로 들어갈 수 있는 타입>

string : value,

number : value,

boolean : value,

object : value -> { }로 묶임,

array : value -> [ ]로 묶임. 안의 값은 같은 값의 반복이어야 함 

예시
array 값 예시(array안에 object의 반복)

<JSON 규칙>

  • 스네이크 케이스 : 단어의 구별마다 언더바 쓰기

  • 카멜 케이스 

코드를 작성하고 POST 요청을 보냈더니 인텔리제이 콘솔에 아무것도 찍히는 것이 없다.

그 이유는 인자로 받는 변수 타입 앞에 어노테이션을 빠뜨렸기 때문

http post로 요청을 보낼 때, body에 Data를 심었다고 하기 때문에 @RequestBody를 앞에 붙여줘야함

@RequestBody 어노테이션을 통해 JSON data를 파싱할 수 있음

 

이제 다시 보내보니까 Response 200!
인텔리제이에도 잘 뜬다

하지만, 어떤 값을 보낼 지 미리 다 알아야 하는데

Map으로 받기엔 힘들다

 

그래서 PostRequestDto 패키지와 java파일을 만들어주고,

받아야 할 변수들 선언, 각 Getter/Setter 만들어주고

toString을 오버라이딩한다

to 치고 엔터 치면 바로 나온다
결과

 

코드 변경 후 서버로 POST 요청 보냈더니 이러한 결과가 나옴

 

나중에 JSON 데이터를 가져와서 처리하는 방법


PostRequestDto에서는 요청하는 JSON의 키에 해당하는 값들이 변수로 선언되어야 한다.

 

우리는 카멜케이스로 데이터를 받고 싶지만,

만약 보내는 쪽에서 스네이크케이스로 데이터를 보낸다면?

실습을 위해 phoneNumber 추가하고 Getter/Setter 추가
toString도 수정

 

일부러 카멜케이스가 아닌 스네이크 케이스로 보내본다면?

 

null값으로 나옴

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
profile

Burninghering's Blog

@개발자 김혜린

안녕하세요! 반갑습니다.