[Springboot]API작성방법-POST, PUT, DELETE

Michelle Kim·2024년 7월 9일

Springboot-Java

목록 보기
3/20

💙Springboot API작성하는 다양한 방법

📍POST API만들기

👉 @RequestBody활용한 POST메서드 구현

POST형식의 요청은 클라이언트가 서버에 리소스를 저장하는 데 사용한다.
POST요청에서는 리소스를 담기 위해 HTTP Boday에 값을 넣어 전송한다.

Body영역에 작성되는 값은 일반적으로 JSON형식으로 전송된다.

@RequestBody는 HTTP의 Body내용을 해당 어노테이션이 지정된 객체에 매핑하는 역할을 한다.
Map객체는 요청을 통해 어떤 값이 들어오게 될지 특정하기 어려울 때 주로 사용한다.

EX) @RequestBody와 Map활용한 POST API구현

// http://localhost:8080/api/v1/post-api/member
    @PostMapping(value = "/member")
    public String postMember(@RequestBody Map<String, Object> postData) {
        StringBuilder sb = new StringBuilder();

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

        return sb.toString();
    }

요청 메세지에 들어갈 값이 정해져 있다면 DTO객체를 매개변수로 삼아 작성할 수 있다.
EX) DTO객체 활용한 POST API구현

 // http://localhost:8080/api/v1/post-api/member2
    @PostMapping(value = "/member2")
    public String postMemberDto(@RequestBody MemberDto memberDTO) {
        return memberDTO.toString();
    }

📍PUT API만들기

PUT API는 웹 애플리케이션 서버를 통해 데이터베이스 같은 저장소에 존재하는 리소스 값을 업데이트하는 데 사용한다.

👉 @RequestBody활용한 PUT메서드 구현

PUT API는 POST메서드와 마찬가지로 값을 HTTP Body에 담아 전달한다.
서버에서는 이 값을 받기 위해 @RequestBody를 사용한다.

MAP객체 활용: 서버에 어떤 값이 들어올지 모른는 경우
DTO객체 활용: 서버에 들어오는 요청에 담겨 있는 값이 정해져 있는 경우

EX) @RequestBody와 Map을 활용한 PUT 메서드 구현

// http://localhost:8080/api/v1/put-api/member
    @PutMapping(value = "/member")
    public String postMember(@RequestBody Map<String, Object> putData) {
        StringBuilder sb = new StringBuilder();

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

        return sb.toString();
    }

EX) DTO객체를 활용한 PUT메서드 구현

 // http://localhost:8080/api/v1/put-api/member1
    @PutMapping(value = "/member1")
    public String postMemberDto1(@RequestBody MemberDto memberDto) {
        return memberDto.toString();
    }

    // http://localhost:8080/api/v1/put-api/member2
    @PutMapping(value = "/member2")
    public MemberDto postMemberDto2(@RequestBody MemberDto memberDto) {
        return memberDto;
    }

👉 ResponseEntity를 활용한 PUT메서드 구현

HttpEntity : header 와 body로 구성된 HTTP요청과 응답을 구성하는 역할을 수행한다.
RequestEntity와 ResponseEntity는 HttpEntity를 상속받아 구현한 클래스이다.

ResponseEntity는 서버에 들어온 요청에 대해 응답 데이터를 구성해서 전달할 수 있게 한다. HttpEntity로부터 HttpHeaders와 Body를 가지고 자체적으로 HttpStatus를 구현한다.

EX) ResponseEntity를 활용한 PUT메서드 구현

// http://localhost:8080/api/v1/put-api/member3
    @PutMapping(value = "/member3")
    public ResponseEntity<MemberDto> postMemberDto3(@RequestBody MemberDto memberDto) {
        return ResponseEntity
            .status(HttpStatus.ACCEPTED)
            .body(memberDto);
    }

메서드의 리턴 타입을 ResponseEntity로 설정, 리턴값 만든다.
status에 넣을 수 있는 값은 다양. HttpStatus.ACCEPTED는 응답코드 202를 가지고 있다.

📍DELETE API만들기

👉 @PathVariable과 @RequestParam활용한 DELETE메서드 구현

@PathVariable이용: URI에 포함된 값을 받아 로직을 처리할 수 있다.
@DeleteMapping어노테이션에 정의한 value의 이름과 메서드의 매개변수 이름을 동일하게 설정해야 삭제할 값이 주입된다.

// http://localhost:8080/api/v1/delete-api/{String 값}
    @DeleteMapping(value = "/{variable}")
    public String DeleteVariable(@PathVariable String variable) {
        return variable;
    }

@RequestParam 어노테이션 통해 쿼리스트링 값도 받을 수 있다.

// http://localhost:8080/api/v1/delete-api/request1?email=value
    @DeleteMapping(value = "/request1")
    public String getRequestParam1(@RequestParam String email) {
        return "e-mail : " + email;
    }
profile
🇬🇧영국대학교)Computer Science학과 졸업 📚Data, AI, Backend 분야에 관심이 많습니다. 👉Email: kimbg9876@gmail.com

0개의 댓글