Backend/SpringBoot

[SpringBoot] 다양한 방법으로 POST API를 생성해보자

seoraroong 2024. 8. 22. 18:18
  • GET API에서는 URL 경로나 파라미터에 변수를 넣어 요청을 보낸다.
  • POST API에서는 저장하고자하는 리소스나 값을 HTTP 바디에 담아 서버에 전달한다.

 

POST 메서드 구현을 위해 새로운 Controller 클래스를 생성해놓았다.

 

 

@RequestMapping을 이용한 POST 메서드 구현

→ 브라우저에서 주소를 입력하는 것은 GET 방식이므로 POST API 요청시 다음과 같은 405 에러 발생

 

- Talend API Tester로 POST 요청 확인하기

 

 

 

 

@RequestBody를 이용한 POST 메서드 구현

  • 일반적으로 POST 형식의 요청은 클라이언트가 서버에 리소스를 저장하는 데 사용한다
  • HTTP Body에 리소스를 담아서 POST 요청
    • JSON 형식으로 값을 주고 받는다 (key:value의 딕셔너리 형태)

위와 같이 작성 후 Talend API Tester에서 요청을 Send 했으나 500 에러 발생

java.lang.reflect.InaccessibleObjectException: Unable to make private java.util.Objects() accessible: module java.base does not "opens java.util" to unnamed module @22a2a654 at java.base/java.lang.reflect.AccessibleObject.throwInaccessibleObjectException(AccessibleObject.java:391) ~[na:na]

—> Objects가 아니라 Object이다.. (오타)

 

→ 200 OK 메시지를 통해 POST 요청이 잘 된 것을 확인할 수 있다.

 

 

 

DTO를 이용해 POST 메서드 구현

  • 동일한 요청을 memberDTO를 이용해 작성
    • 자주 사용하는 객체는 DTO를 이용해 호출하는 것이 편리하다
      • 서버에 어떤 값이 들어올지 모르는 경우 → Map 객체 활용
      • 서버에 들어오는 요청에 담긴 값이 정해져 있는 경우 → DTO 객체 활용