Java

[Spring Boot] Post 메소드 사용법 (@PostMapping)

15호의 개발자 2022. 2. 23. 22:15
반응형

[Spring Boot] Post 메소드 사용법 (@PostMapping)

 

 

이전 글

 

[Spring Boot] Get 메소드 사용법 (@RequestMapping, @GetMapping, 멀티 파라미터, JSON 리턴)

[Spring Boot] Get 메소드 사용법 (@RequestMapping, @GetMapping, 멀티 파라미터, JSON 리턴) @RequestMapping import org.springframework.web.bind.annotation.*; @RestController // controller임을..

unit-15.tistory.com

 


 

POST는 언제 발생하는 것인가?

post라는 것은 어떨 때 발생하냐면, HTML에서 <Form> 태그를 사용한다든지, ajax에서 검색을 할 때(비동기화) 사용된다. 이러한 경우는 주로 검색 파라미터가 많은 경우이므로 멀티 파라미터로 받아야 한다. 하지만 getMethod와 같이 SearchParam으로 받으면 안 되고 @RequestBody로 받겠다고 선언을 해줘야 한다. 이는 http 통신을 할 때 post의 body에 data를 넣어서 보내겠다라는 의미로, RequestBody에 SearchParam 값들을 매칭시켜서 달라는 의미이다.

SearchParam과 관련된 부분은 상단에 있는 "Get 메소드 사용법" 게시글을 참고하면 된다.

 

RequestBody의 form에는 여러 형식이 있다. request 포맷으로는 json, xml, multipart-form, text-plain 등 여러 타입이 있다. 이 경우 @PostMapping에 produces = {"application-json"} 과 같이 입력하면 된다. 하지만 우리는 기본적으로 json 형식을 사용하므로 이 부분은 필요 없다.

 

 

 

@PostMapping

SearchParam과 관련된 부분은 상단에 있는 "Get 메소드 사용법" 게시글을 참고하면 된다.

import org.springframework.web.bind.annotation.*;

@RestController // controller임을 알려주는 표시
@RequestMapping("/api") // 이곳으로 들어오는 API주소를 mapping, /api주소로 받겠다(localhost:8080/api)
public class PostController {

//    @RequestMapping(method = RequestMethod.POST, path = "/postMethod") // 아래랑 동일
    @PostMapping("/postMethod")
    public String postMethod(@RequestBody SearchParam searchParam) {
        return "OK";
    }

}

@PostMapping의 기본 사용법은 위와 같다.

 

 

 

참고로, POST의 경우 아래와 같이 @RequestMapping으로 작성해도 되지만

@RequestMapping(method = RequestMethod.POST, path = "/postMethod")

더 간결하게 작성하고 싶으면 @PostMapping을 이용하면 된다. 둘은 동일한 역할을 하므로 취향껏 선택하면 된다.

@PostMapping("/postMethod")

 

 

 

Rest Client 툴을 이용한 테스트

post 데이터를 보내는 방식은 html에 있는 <Form> 태그를 통해 보낸다든지, ajax를 통해 post 방식으로 쏘는 방식이 있다. 하지만 개발하면서 테스트를 하기 위해서는 rest client라는 툴을 통해서 request를 요청하고 response가 제대로 오는지 테스트 할 수 있다. 크롬 웹 스토어에서 "rest client"라고 검색해보면 여러 확장 프로그램이 뜰 것이다. 나의 경우 Talend API Tester를 설치했다.

 

import org.springframework.web.bind.annotation.*;

@RestController // controller임을 알려주는 표시
@RequestMapping("/api") // 이곳으로 들어오는 API주소를 mapping, /api주소로 받겠다(localhost:8080/api)
public class PostController {

    @PostMapping("/postMethod")
    public SearchParam postMethod(@RequestBody SearchParam searchParam) {
        return searchParam;
    }
    
}

이번에는 정상적으로 값이 들어갔는지 확인하기 위해, 반환값을 String을 반환하던 것에서 SearchParam 객체를 반환하도록 위와 같이 코드를 바꿔보자. 

 

searchParam에 값이 정상적으로 들어갔는지 확인하기 위해 Talend API Tester를 이용해서 확인해보자. 아래와 같이 METHOD를 POST로 선택한 후, 작성한 주소랑 맞춰서 입력한다. Content-Type은 application/json으로 맞춰놓고, 이에 맞춰서 BODY에 JSON 형식으로 데이터를 넣어놓는다. 테스트용이니까 임의의 값을 직접 작성하면 되며, 나는 아래와 같이 데이터를 넣어놓았다. 이제 Send를 눌러보자.

 

postMethod 호출

아래와 같이 Response에 200 OK로 뜨면 성공이며, BODY 부분에 위에서 입력한 BODY 내용과 동일한 값이 뜨는지 확인해보자. 

호출한 postMethod에 대한 Response

 

이것이 바로 스프링 부트에서 json으로 들어온 데이터를 처리하는 방법이다.

 


 

다음 글

 

Lombok(롬복) & JPA 에 대한 간단한 설명, 기본 애너테이션(@) 몇 가지

Lombok(롬복) & JPA 에 대한 간단한 설명, 기본 애너테이션(@) 몇 가지 Lombok(롬복) 자바로 코딩을 할 때 가장 힘든 부분 중 하나는, 변수를 선언하고 나서 다음과 같은 것들을 일일이 만들어줘

unit-15.tistory.com

 

 

 

(출처: 패스트캠퍼스 Java & SpringBoot로 시작하는 웹 프로그래밍)

반응형