본문 바로가기

TIL

TIL) Spring Boot에서 POST API생성

0. Spring Boot에서 POST API를 생성하고 controller에 적용하기

1.PostController작성

 PostController를 작성 할 때, 클래스 위에 다음과 같은 어노테이션을 작성합니다.

@RestController
@RequestMapping("/api/v1/post-api")

 

 @RestController는 이 클래스가 controller라는 것을 명시해줍니다. 또한 @RequestMapping("/api/v1/get-api")는 이 api로 들어오는 API 주소를 명시해 준 것입니다. 즉, 다음 주소로 접속할 수 있습니다.

http://localhost:8080/api/v1/get-api

 

이 컨트롤러에서 post메소드를 매핑하는 방법은 다음과 같습니다.

@PostMapping(value = "/postmapping")

 

2. PostController에서 request받기

 post메소드는 request를 request body에서 받을 수 있습니다. request body는 JSON형태로 전달하게 됩니다.

이때, request body는 Map형태와 DTO형태로 받을 수 있습니다. 우선 Map형태로 request body를 받는 방법은 다음과 같습니다.

@PostMapping(value = "/member")
public String postMember(@RequestBody Map<String, String> postData) {
  StringBuilder sb = new StringBuilder();

  postData.entrySet().forEach(
      map->{
        sb.append(map.getKey() + " : " + map.getValue() + "\n");
      }
  );
  return sb.toString();
}

 

 위와 같은 방법으로 request body를 postData에 매개변수로 대입받을 수 있습니다.

 

DTO를 생성하여 request body를 DTO에 저장하는 방식으로 전달받을 수 있습니다. 우선 DTO란 캡슐화를 도와주는 데이터가 저장된 클래스 입니다. 이번 TIL에서 사용될 DTO는 다음과 같습니다.

@Setter
@Getter
public class MemberDTO{
  private String name;
  private String email;
  private String organization;

  @Override
  public String toString() {
    return "MemberDTO{" +
        "name='" + name + '\'' +
        ", email='" + email + '\'' +
        ", organization='" + organization + '\'' +
        '}';
  }
}

 

lombok의 Getter와 Setter를 이용하여 DTO를 작성하였습니다.

memberDTO를 이용하여 request body를 전달받는 코드는 다음과 같습니다.

@PostMapping(value = "member2")
public String postMemberDTO(@RequestBody MemberDTO memberDTO){
  return memberDTO.toString();
}

 

이와 같이 전달을 할 때, post는 request body의 형식으로 전달을 받기 때문에 다음과 같은 URL로 전달 할 수 있습니다.

http://localhost:8080/api/v1/put-api/member2

 

이는 GET API와는 다르게 param을 전달하지 않기 때문에 ?뒤에 param이 붙지 않습니다.

 

위의 방법으로 PostController를 이용하여 정보를 전달 받을 수 있습니다.

 

2. 내일 해야하는 것

  • Spring 강의 듣기
  • 과제 lv1 구현하기