Spring 에서 HTTP 요청 바디값의 방법

Seong Hyeon Kim·2024년 7월 20일
0

스프링

목록 보기
3/9

@RequestBody Map<String, String>@RequestBody String jsonBody의 차이점은 다음과 같습니다:

@RequestBody Map<String, String>

  1. 데이터 형식: 이 방식은 JSON 객체를 Map<String, String>으로 변환하여 받습니다. 즉, JSON 객체의 각 필드와 그 값을 Map의 키와 값으로 매핑합니다.

    @PostMapping("/example")
    public void exampleMethod(@RequestBody Map<String, String> requestBody) {
        // Map으로 들어온 데이터 처리
    }

    예시: 아래와 같은 JSON 요청이 오면

    {
        "name": "John",
        "age": "30"
    }

    이 데이터는 Map<String, String> 형태로 변환됩니다:

    {
        "name" -> "John",
        "age" -> "30"
    }
  2. 장점: 간단한 키-값 쌍 데이터를 처리하기 쉽습니다.

  3. 단점: 중첩된 구조나 복잡한 JSON 데이터를 처리하기 어렵습니다. 모든 값이 문자열(String)로 변환되므로 숫자나 불리언 같은 데이터 타입 구분이 힘듭니다.

@RequestBody String jsonBody

  1. 데이터 형식: 이 방식은 요청 바디를 그대로 문자열로 받습니다. JSON 문자열을 직접 처리할 수 있습니다.

    @PostMapping("/example")
    public void exampleMethod(@RequestBody String jsonBody) {
        // JSON 문자열 처리
    }

    예시: 아래와 같은 JSON 요청이 오면

    {
        "name": "John",
        "age": 30
    }

    이 데이터는 문자열로 받습니다:

    "{\"name\":\"John\", \"age\":30}"
  2. 장점: JSON의 원본 구조를 그대로 사용할 수 있습니다. 이를 통해 JSON 파싱 라이브러리(Jackson, Gson 등)를 사용하여 복잡한 구조의 데이터를 쉽게 처리할 수 있습니다.

  3. 단점: 수동으로 JSON을 파싱해야 하기 때문에 추가적인 코드가 필요합니다.





언제 Map<String, String>을 사용하는가?

  1. 간단한 키-값 쌍 데이터: 데이터가 단순하고, 각 필드가 문자열 형태일 때 유용합니다.
  2. 적은 필드 수: 필드가 많지 않고, 구조가 단순할 때 적합합니다.
  3. 변환 및 검증 로직이 필요 없는 경우: JSON을 직접 다루는 것보다 간단하게 데이터를 처리할 수 있습니다.

하지만, 복잡한 JSON 구조를 다루거나 다양한 데이터 타입을 처리해야 할 때는 String으로 받아서 직접 파싱하는 것이 더 적합합니다. 이 경우 JSON 파싱 라이브러리를 활용하면 객체로 쉽게 변환하여 사용할 수 있습니다.

결론

  • 간단한 데이터: @RequestBody Map<String, String>을 사용.
  • 복잡한 JSON 데이터: @RequestBody String jsonBody를 사용하고 직접 파싱.

각 방법은 상황에 따라 적절히 선택하여 사용하는 것이 좋습니다.

profile
삽질도 100번 하면 요령이 생긴다. 부족한 건 경험으로 채우는 개발자

0개의 댓글