Java

[Java] Spring_Front에서 전달 된 데이터 Controller에서 처리하는 방법

고즈너키 2023. 6. 1. 15:29

Intro

안녕하세요! Plitche(플리체)입니다. :P
이번에는 Front에서 여러가지 방법으로 데이터를 Back단으로 전달했을때, Controller에서 데이터를 받는 방법에 대해서 여러가지 소개해 드리려고 합니다.

 

1. HTTP 요청 파라미터(HTTP Request Parameters)

  • 프론트엔드에서 넘어온 데이터가 쿼리 문자열 또는 폼 데이터로 전송되는 경우, Controller에서는 해당 데이터를 HTTP 요청 파라미터로 받을 수 있습니다.
  • Spring MVC에서는 @RequestParam 어노테이션을 사용하여 요청 파라미터를 매핑합니다.

  • 예를 들어, 다음과 같이 메소드 파라미터에 @RequestParam을 사용하여 요청 파라미터를 받을 수 있습니다.
@GetMapping("/example")
public String exampleMethod(@RequestParam("paramName") String paramValue) {
    // 파라미터 처리
    return "response";
}

 

2. 경로 변수 (Path Variables)

  • 프론트엔드에서 넘어온 데이터가 URL 경로에 포함되어 전송되는 경우, Controller에서는 해당 데이터를 경로 변수로 받을 수 있습니다.
  • Spring MVC에서는 @PathVariable 어노테이션을 사용하여 경로 변수를 매핑합니다.

  • 예를 들어, 다음과 같이 메소드 파라미터에 @PathVariable을 사용하여 경로 변수를 받을 수 있습니다:
@GetMapping("/example/{id}")
public String exampleMethod(@PathVariable("id") Long itemId) {
    // 경로 변수 처리
    return "response";
}

 

3. 요청 바디 (Request Body)

  • 프론트엔드에서 넘어온 데이터가 JSON 또는 XML과 같은 요청 본문에 포함되어 전송되는 경우, Controller에서는 해당 데이터를 요청 바디로 받을 수 있습니다.
  • Spring MVC에서는 @RequestBody 어노테이션을 사용하여 요청 바디를 매핑합니다.

  • 예를 들어, 다음과 같이 메소드 파라미터에 @RequestBody을 사용하여 요청 바디를 받을 수 있습니다:
@PostMapping("/example")
public String exampleMethod(@RequestBody ExampleDTO dto) {
    // 요청 바디 처리
    return "response";
}

 

 

4. 멀티파트 파일 업로드 (Multipart File Upload)

  • 프론트엔드에서 넘어온 데이터가 파일 업로드와 함께 전송되는 경우, Controller에서는 멀티파트 파일 업로드를 처리할 수 있습니다.
  • Spring MVC에서는 @RequestPart 어노테이션을 사용하여 멀티파트 요청을 매핑합니다.

  • 예를 들어, 다음과 같이 메소드 파라미터에 @RequestPart를 사용하여 멀티파트 파일을 받을 수 있습니다.
@PostMapping("/upload")
public String uploadFile(@RequestPart("file") MultipartFile file) {
    // 파일 업로드 처리
    return "response";
}

위의 예제에서 @RequestPart 어노테이션을 사용하여 요청의 멀티파트 파일을 MultipartFile 객체로 받을 수 있습니다.

 

5. 데이터 바인딩 (Data Binding)

  • 프론트엔드에서 넘어온 데이터를 자바 객체에 자동으로 매핑하는 기능을 데이터 바인딩이라고 합니다.
  • Spring MVC에서는 데이터 바인딩을 자동으로 처리해주는 기능을 제공합니다.
  • Controller 메소드의 파라미터에 자바 객체를 선언하면, Spring은 요청 데이터를 해당 객체의 필드에 자동으로 매핑합니다.

  • 예를 들어, 다음과 같이 메소드 파라미터에 자바 객체를 선언하여 데이터 바인딩을 수행할 수 있습니다:
@PostMapping("/example")
public String exampleMethod(ExampleDTO dto) {
    // 데이터 바인딩된 객체 사용
    return "response";
}

이 경우, 프론트엔드에서 넘어온 데이터는 ExampleDTO 객체의 필드에 자동으로 매핑됩니다.

 

6. 데이터 유효성 검사 (Data Validation)

  • 프론트엔드에서 넘어온 데이터의 유효성을 검사하는 것은 중요한 작업입니다.
  • 데이터 유효성 검사는 주로 Controller에서 수행됩니다.
  • Spring MVC에서는 유효성 검사를 위해 @Valid 어노테이션과 유효성 검사용 어노테이션을 조합하여 사용할 수 있습니다.

  • 예를 들어, 다음과 같이 메소드 파라미터에 @Valid 어노테이션을 사용하여 유효성 검사를 수행할 수 있습니다:
@PostMapping("/example")
public String exampleMethod(@Valid ExampleDTO dto, BindingResult bindingResult) {
    if (bindingResult.hasErrors()) {
        // 유효성 검사 오류 처리
        return "error";
    }
    // 유효성 검사 통과 시 처리
    return "response";
}

@Valid 어노테이션을 사용하면 Spring은 ExampleDTO 객체의 필드에 정의된 유효성 검사 어노테이션을 기반으로 데이터의 유효성을 검사합니다. 검사 결과는 BindingResult 객체를 통해 확인할 수 있습니다.

 

정리

  • 이러한 방법들을 조합하여 Java의 Controller에서 프론트엔드에서 넘어온 데이터를 적절하게 처리하고 유효성을 검사할 수 있습니다. 이를 통해 안전하고 신뢰할 수 있는 데이터 처리가 가능해집니다.

  • 각 방법은 데이터 전송 방식이나 요구사항에 따라 선택하여 사용할 수 있습니다.
  • 예를 들어, HTTP 요청 파라미터를 사용하는 경우 쿼리 문자열이나 폼 데이터를 받을 수 있고, 경로 변수를 사용하는 경우 URL 경로에 포함된 데이터를 받을 수 있습니다. 요청 바디를 사용하는 경우에는 JSON 또는 XML과 같은 데이터를 받을 수 있고, 멀티파트 파일 업로드를 위해서는 멀티파트 요청을 처리할 수 있습니다.

  • 데이터 바인딩을 활용하면 프론트엔드에서 넘어온 데이터를 자바 객체에 자동으로 매핑할 수 있으며, 데이터 유효성 검사를 통해 받은 데이터의 유효성을 검증할 수도 있습니다.

  • 모든 방법을 동시에 사용할 필요는 없고, 요구사항에 맞게 적절한 방법을 선택하여 사용하면 됩니다. 프론트엔드에서 넘어온 데이터를 정확히 받고 처리함으로써 원하는 동작을 수행할 수 있습니다.