Http Method 개념 정리(POST, PUT, DELETE)

재현·2024년 2월 7일

Http Method의 정의와 종류

클라이언트와 서버 사이에 이루어지는 요청(Request)과 응답(Response) 데이터를 전송하는 방식을 말한다.

  • 주요 메서드
  • GET : 리소스 조회
  • POST:  요청 데이터 처리, 주로 등록에 사용
  • PUT : 리소스를 대체(덮어쓰기), 해당 리소스가 없으면 생성
  • DELETE : 리소스 삭제
  • PATCH : 리소스 부분 변경 (PUT이 전체 변경, PATCH는 일부 변경)
  • 그 외 메서드
  • HEAD : GET과 동일하지만 메시지 부분(body 부분)을 제외하고, 상태 줄과 헤더만 반환
  • OPTIONS : 대상 리소스에 대한 통신 가능 옵션(메서드)을 설명(주로 CORS에서 사용)
  • CONNECT : 대상 자원으로 식별되는 서버에 대한 터널을 설정
  • TRACE : 대상 리소스에 대한 경로를 따라 메시지 루프백 테스트를 수행

POST Method 정의 및 예제

  • 전달한 데이터 처리/생성 요청 메서드 (Create)
  • 메시지 바디(body)를 통해 서버로 요청 데이터 전달하면 서버는 요청 데이터를 처리하여 업데이트
    전달된 데이터로 주로 신규 리소스 등록, 프로세스 처리에 사용
  • 만일 데이터를 GET 하는데 있어, JSON으로 조회 데이터를 넘겨야 하는 애매한 경우 POST를 사용
@RestController
@RequestMapping("/api")
public class PostApiController {

    @PostMapping("/post")
    public void post(@RequestBody Map<String, Object> requestData) {
        requestData.forEach((key, value) -> {
            System.out.println("key : " + key);
            System.out.println("value : " + value);
        });
    }

  • 실행결과

  • PostRequestDto(getter, setter, toString 오버라이딩)를 만들어 테스트

@PostMapping("/post")
    public void post(@RequestBody PostRequestDto postRequestDto) {
        System.out.println(postRequestDto);
    }
  • 실행결과

PUT Method 정의 및 예제

  • 리소스를 대체(수정)하는 메서드 (Update)
  • 만일 요청 메세지에 리소스가 있으면 덮어쓰고, 없으면 새로 생성한다.
  • /put/100 데이터가 존재하면 기존에 것을 완전 대체 하고 데이터가 없으면 대체 할게 없으니까 새로 생성한다.
  • 데이터를 대체해야 하니, 클라이언트가 리소스의 구체적인 전체 경로를 지정해 보내주어야 한다.
@PutMapping("/put/{userId}")
public PostRequestDto put(@RequestBody PostRequestDto postRequestDto, @PathVariable(name = "userId") Long id) {
    return postRequestDto;
}

DELETE Method 정의 및 예제

  • 리소스 제거하는 메소드(DELETE)
  • 상태코드는 대부분 200을 사용하고 상황에 따라 204를 사용한다.
@RestController
@RequestMapping("/api")
public class DeleteApiController {

    @DeleteMapping("/delete/{userId}")
    public void delete(@PathVariable String userId, @RequestParam String account) {
        System.out.println(userId);
        System.out.println(account);
    }

  • 실행결과
profile
운동과 코딩

0개의 댓글