Preloader image
DDD

자바

Query String을 @RequestBody로 변환하여 처리하는 API 예제

작성자 관리자 (admin)
조회수 1,297
입력일 2025-02-27 22:44:42

일반적으로 Query String은 @RequestParam을 사용하고, **JSON 데이터를 받으려면 @RequestBody**를 사용합니다.
하지만, Query String을 JSON 요청 본문(RequestBody)로 변환하려면 DTO 객체를 활용하거나 커스텀 컨버터를 적용할 수 있습니다.

1. 기본 Query String 처리 (@RequestParam 사용)

우선 기본적인 Query String을 처리하는 API를 살펴보겠습니다.

import org.springframework.web.bind.annotation.*;

import java.util.Map;

@RestController
@RequestMapping("/query")
public class QueryController {

    @GetMapping
    public Map<String, String> getQueryParams(@RequestParam Map<String, String> params) {
        return params;
    }
}
 

  • 예제 요청:

    pgsql

    복사편집

    GET /query?name=John&age=30

  • 응답 결과:

    json

    복사편집

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

2. Query String을 @RequestBody로 변환하는 API

방법 1: DTO 활용하여 JSON 본문으로 변환 ***************************

Query String을 받아서 JSON 요청 본문(@RequestBody) 형태로 변환할 수 있습니다.

* DTO 클래스 생성

import lombok.Getter;
import lombok.Setter;

@Getter
@Setter
public class UserDTO {
    private String name;
    private Integer age;
}

* 컨트롤러에서 @RequestBody로 처리

import org.springframework.web.bind.annotation.*;

@RestController
@RequestMapping("/convert")
public class ConvertController {

    @PostMapping
    public UserDTO convertQueryToBody(@RequestBody UserDTO userDTO) {
        return userDTO; // JSON 형식으로 응답
    }
}

방법 2: Query String을 JSON으로 변환 후 @RequestBody로 전달

ObjectMapper를 사용하여 Query String을 JSON 본문으로 변환하는 API를 만들 수도 있습니다.

import com.fasterxml.jackson.databind.ObjectMapper;
import org.springframework.http.HttpEntity;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*;

import java.util.Map;

@RestController
@RequestMapping("/convert-json")
public class ConvertJsonController {

    private final ObjectMapper objectMapper = new ObjectMapper();

    @GetMapping
    public ResponseEntity<UserDTO> convertQueryToJson(@RequestParam Map<String, String> params) throws Exception {
        // Query String을 JSON 객체로 변환
        String json = objectMapper.writeValueAsString(params);
        UserDTO userDTO = objectMapper.readValue(json, UserDTO.class);

        return ResponseEntity.ok(userDTO);
    }
}

정리

@RequestParam으로 Query String을 받는 기본 API
@RequestBody로 Query String을 JSON 요청 본문으로 변환
ObjectMapper를 사용해 Query String을 JSON으로 변환 후 처리

이제 Query String을 @RequestBody로 변환하여 처리할 수 있습니다!