본문 바로가기
Programming/Spring

[Spring] - 스프링부트 API 작성 방법 : Post, Put, Delete Mapping

by jenlve 2024. 2. 6.

Post API

역할 : 웹 애플리케이션을 통해 DB 등의 저장소에 리소스를 저장할 때 사용되는 API이다.

특징 :

URL 경로 / Param에 변수를 넣어 요청을 보낸 GET API와 달리,

  HTTP body에 담아 서버에 전달한다. 

HTTP body에 담아 전달되는 데이터의 형태는 주로 JSON(JavaScript Object Notation) 형식으로

  값을 주고 받는다. 


Post API 전달 방법

@RequestBody를 이용해서 구현

<참고> 전송 데이터를 특정하기 어려울 때는 Map을, 데이터가 특정되어 있을 경우엔 DTO를 주로 사용한다. 

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

    postData.forEach((key, value) ->
            sb.append(key).append(" : ").append(value).append("\n"));

    return sb.toString();
}

 


Put API

역할 : 웹 애플리케이션을 통해 DB 등의 저장소에 존재하는 리소스 값을 업데이트하는 데  사용하는 API이다.

특징 :

POST API와 비슷하게, HTTP body에 담아 서버에 전달한다. 

 HTTP body에 담아 전달되는 데이터의 형태는 주로 JSON(JavaScript Object Notation) 형식으로

  값을 주고 받는다. 


Put API 전달 방법

@RequestBody를 이용해서 구현

 POST API 구현에서 @PutMapping 어노테이션만 다르고 나머진 전부 동일하다.

 DTO 형식으로 데이터를 전송할 경우

    @PutMapping("/member")
    public MemberDto postMemberDto(@RequestBody MemberDto memberDto){
        return memberDto;
    }

 

Postman에서 해당 코드에 맞는 요청(MemberDto 형태를 갖는 JSON, 위쪽 raw 내용)을 보냈을 때, 하단에 MemberDto의 형태로, 자동으로 JSON형식으로 맞춰서 데이터가 출력되는 것을 확인할 수 있다.이처럼 DTO를 사용하면, 데이터 전달에 있어 가독성을 높일 수 있고, 동일 객체의 특성에 대한 묶음으로 코드의 응집도를 높일 수 있다. 

 


Delete API

역할 : 웹 애플리케이션을 통해 DB 등의 저장소에 존재하는 리소스 값을 삭제하는 데  사용하는 API이다.

특징 :

앞선 방식들과 같이 @Path Variable과 @RequestParam을 활용해 Delete 메서드를 구현할 수 있다. 

 


발생 에러

추가적으로 postman에서 요청을 보낼 경우, 서버에 이런 에러 메시지가 뜰 수도 있다.

 

이 경우, @Path Variable이나 @Request Param 사용시 인자로 받아오는 키 값 부분과, 입력으로 받는 변수명을 서로 맞춰줘도, 스프링에서 인식을 못하는 것인데,

나는 (name = "") 을 추가해서 해결했다. 

 

예시)

    @DeleteMapping("/{variable}")
    public String DeleteVariable(
            @PathVariable (name = "variable") String variable
    ){
        return variable;
    }