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 구현하기
'TIL' 카테고리의 다른 글
TIL) 인텔리제이에서 mysql 사용하기 (0) | 2024.11.01 |
---|---|
TIL) Spring Boot에서 PUT, DELETE API 생성 (1) | 2024.10.31 |
TIL) Spring Boot에서 GET API생성 (0) | 2024.10.29 |
TIL) 스프링 부트(Spring Boot)프로젝트 만들기 (0) | 2024.10.28 |
TIL) 자바와 인텔리제이 디버깅 (0) | 2024.10.25 |