티스토리 뷰

Backend/Spring

#6 POST API

RadderNepa 2023. 7. 31. 03:34

● JSON(JavaScript Object Notation)

- POST 방식에서는 HTTP Body를 이용해 데이터를 받는다. 이때 사용하는 문법이 바로 JSON이다.

- Java에서 JSON과 비슷한 형식은 Map<Object, Object> 이다.(Object인 만큼 다양한 형식의 값이 담길 수 있다.)

{
    "name" : "Kim",
    "age" : 100
}

● HTTP Body로 데이터 받기

[API Specification(API 명세) = 어떻게 API를 만들 것인가]
1. HTTP Method  →  POST
2. HTTP Path  →  /multiply
3. HTTP Body (JSON)  →  { “number1”: 숫자, “number2”: 숫자 }
4. API 반환 결과  →  (number1 * number2)

★ @RestController = @Controller + @ResponseBody

[Controller - HTTP Body는 CalculatorMultiplyRequest 객채에 매핑된다.]

package com.group.libraryapp.controller.calculator;

import com.group.libraryapp.dto.calculator.request.CalculatorMultiplyRequest;
import org.springframework.web.bind.annotation.*;

@RestController
public class CalculatorController {
    @PostMapping("/multiply")
    public int multiplyTwoNumbers(@RequestBody CalculatorMultiplyRequest request) {
        // DTO 사용
        return request.getNumber1() * request.getNumber2();
    }
}
[DTO]

package com.group.libraryapp.dto.calculator.request;

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

    public int getNumber1() {
        return number1;
    }

    public int getNumber2() {
        return number2;
    }
}
@RequestBody : HTTP Body 안에 있는 JSON을 JAVA 객체(VO)로 변환(parsing)해주는 Annotation
@ResponseBody : client에게 보내는 JAVA 객체(VO)를 JSON 객체로 변환(parsing)HTTP Body 안에 넣어주는 Annotation

- 참고로 DTO의 필드명과 JSON의 key 명이 일치해야 제대로 변환된다.

인프런 - 자바와 스프링 부트로 생애 최초 서버 만들기, 누구나 쉽게 개발부터 배포까지!(최태현)

 

cf) 참고하면 좋은 글

https://velog.io/@dyunge_100/Spring-Controller%EC%99%80-RestController%EC%9D%98-%EC%B0%A8%EC%9D%B4

 

[Spring] @Controller와 @RestController의 차이

0. @RequestBody, @ResponseBody 어노테이션 보통 웹에서 화면 전환이 없이 이루어지는 동작들은 대부분 비동기 통신으로 이루어진다. 비동기 통신을 하기 위해선 클라이언트가 서버로 요청 메시지의 본

velog.io

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/08   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
31
글 보관함