자바와 스프링 부트로 생애 최초 서버 만들기

#9 POST API 개발 및 테스트! 24.12.18

박태정 입니다. 2025. 2. 12. 16:21
반응형

POST API 개발 및 테스트하기 🚀

- JSON과 DTO를 활용한 POST API 이해하기 -

웹 개발에서 데이터를 서버로 보내는 대표적인 방법 중 하나가 POST API입니다. 오늘은 POST API에서 데이터를 처리하는 방법, JSON의 기본 개념, 그리고 DTO를 사용해 데이터를 처리하는 방식까지 함께 알아보겠습니다.


1. POST에서 데이터를 어떻게 받을까? 🤔

POST API는 주로 HTTP Body를 통해 데이터를 받습니다.
이 데이터는 보통 JSON(자바스크립트 객체 표기법) 형태로 전달됩니다.

JSON이란?

JSON은 데이터를 키-값(key-value) 형태로 표현하는 객체 표현법입니다.
예를 들어, 한 사람에 대한 정보를 JSON으로 표현한다면 다음과 같습니다:

{
    "name": "박태정",
    "age": 24
}
  • Key: 데이터를 나타내는 이름.
  • Value: 데이터의 실제 값(문자열, 숫자, 리스트, JSON 등 다양하게 가능).

JSON은 계층 구조를 가지며, 리스트중첩된 JSON을 값으로 포함할 수 있습니다.


2. 곱셈 API 만들기 ✖️

API 사양

  • HTTP Method: POST
  • HTTP Path: /multiply
  • HTTP Body: JSON 형태로 두 숫자를 전달.
    예시:
{
    "number1": 10,
    "number2": 20
}

API 코드 구현

Controller

@PostMapping("/multiply") // POST /multiply
public int multiplyTwoNumbers(@RequestBody CalculatorMultiplyRequest request) {
    return request.getNumber1() * request.getNumber2();
}
  • @PostMapping("/multiply")
    POST 요청이 /multiply 경로로 들어왔을 때 실행됩니다.
  • @RequestBody
    HTTP Body에 담긴 JSON 데이터를 CalculatorMultiplyRequest 객체로 변환합니다.

DTO (Data Transfer Object)

package org.zerock.libraryapp.dto.calculator.request;

public class CalculatorMultiplyRequest {
    private int number1;
    private int number2;

    public int getNumber1() {
        return number1;
    }

    public int getNumber2() {
        return number2;
    }
}
  • DTO란?
    데이터의 전송과 변환을 담당하는 객체입니다.
    JSON의 키(key) 이름과 DTO 필드 이름이 일치해야 데이터를 매핑할 수 있습니다.

3. 한 컨트롤러에 여러 API 추가 가능! 📚

컨트롤러 클래스 하나에 다양한 API를 추가할 수 있습니다.
예를 들어, 곱셈뿐만 아니라 덧셈, 나눗셈 API도 같은 컨트롤러에 추가 가능합니다.


4. API 실행 결과는? 🎬

곱셈 API를 호출하면 아래와 같은 결과를 얻을 수 있습니다.

  • HTTP Status: 200 OK
  • Content-Type: application/json
  • Response Body: 150 (10 * 15의 결과)

마무리: POST API, 어렵지 않아요! ✅

오늘은 POST API에서 데이터를 처리하는 방법을 알아보았습니다.
핵심 내용을 다시 한번 정리하면:

  • POST API는 데이터를 HTTP Body로 받습니다.
  • JSON은 데이터를 표현하는 키-값 구조의 표준 형식입니다.
  • DTO를 통해 JSON 데이터를 자바 객체로 변환하고 처리할 수 있습니다.
  • 한 컨트롤러 클래스에 여러 API를 구현할 수 있습니다.

반응형