POST API 만들기

Yu Seong Kim·2024년 1월 15일
0

SpringBoot

목록 보기
10/29

POST API란?

  • 웹 애플리케이션을 통해 데이터베이스 등의 저장소에 리소스를 저장할 때 사용되는 API 입니다.
  • GET API와 달리 POST API는 저장하고자 하는 리소스나 값을 HTTP바디에 담아 서버에 전달합니다.
💡 리소스: 컴퓨터 시스템과 관련된 여러 가지의 자원을 총칭하는 말

<실습 클래스 생성>

  • 이전과 동일하게 controller 패키지 안에 PostController라는 클래스를 생성한다.

1. 컨트롤러 클래스에서 공통 URL 설정

// http://localhost:8080/api/v1/post/domain
@RestController
@RequestMapping("/api/v1/post")
public class PostController {
    
}

<호출 결과>

!! 좌측 상단에 메서드를 POST로 변경해주셔야 합니다!!



2. @RequestMapping으로 구현하기

@RestController
@RequestMapping("/api/v1/post")
public class PostController {
    @RequestMapping(value = "/domain",method = RequestMethod.POST)
    public String FirstPost(){
        return "Hello Post API ";
    }
}
  • method = RequestMethod.POST 이 부분만 POST로 다르고, @RequestMapping 사용 방식은 GET API와 다르지 않습니다.

3. @RequestBody와 Map 활용한 POST API 구현

  • POST 형식의 요청은 클라이언트 서버에 리소스를 저장하는 데 사용하기 때문에 클라이언트의 요청에 트래픽 값이 포함돼 있습니다.
  • 즉, POST 요청은 리소스를 담기위하여 HTTP Body에 값을 넣어 전송합니다.
  • 실습은 JSON형식으로 값을 주고받을 예정입니다.
// http://localhost:8080/api/v1/post/member
    @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();
    }
  • @PostMapping을 사용 했습니다.
  • 이 어노테이션은 method를 지정하지 않아도 됩니다.
  • @RequestBody는 HTTP의 Body 내용을 해당 어노테이션이 지정된 객체에 매핑하는 역할을 합니다.
  • Map 객체는 어떤 값이 들어올지 모를때 사용합니다.
💡 JSON (JavaScript Object Notation)
  • 데이터를 저장하거나 전송할 때 많이 사용되는 경량의 DATA 교환 형식입니다.
  • Javascript에서 객체를 만들 때 사용하는 표현식을 의미합니다.
  • JSON 표현식은 사람과 기계 모두 이해하기 쉽고, 용량이 작아 최근에는 JSON이 XML을 대체해서 데이터 전송 등에 많이 사용합니다.
  • JSON은 데이터 포맷일 뿐이며 어떠한 통신 방법도, 프로그래밍 문법도 아닌 단순히 데이터를 표시하는 표현 방법일 뿐입니다.

<호출 결과>

JSON형식으로 자신의 이름과 이메일을 호출해보세요!

{
  "name" : "kim",
  "email" : "abc123@naver.com"
}


4. @DTO객체를 활용한 POST API 구현

  • 이전에 생성한 MemberDto 사용.
// http://localhost:8080/api/v1/post/member2
    @PostMapping(value = "/member2")
    public String PostMember2(@RequestBody MemberDto memberDto){

        return memberDto.toString();
    }

<호출 결과>

Talend API Test에서 Body 영역에 값을 입력

→ Response에 나오는 것을 볼 수 있음

profile
Development Record Page

0개의 댓글