SeouliteLab

[Java/자바] Spring @RequestHeader: HTTP 요청 헤더 처리 본문

프로그래밍

[Java/자바] Spring @RequestHeader: HTTP 요청 헤더 처리

Seoulite Lab 2024. 3. 12. 11:03

Spring 프레임워크에서 @RequestHeader 어노테이션은 HTTP 요청의 헤더 정보를 컨트롤러 메서드의 매개변수로 주입할 때 사용됩니다. 이 글에서는 @RequestHeader 어노테이션의 사용법과 예제 코드를 통해 자세히 알아보겠습니다.

1. 기본적인 @RequestHeader 사용법

가장 간단한 형태의 @RequestHeader 어노테이션은 다음과 같이 컨트롤러 메서드의 매개변수로 사용됩니다.

import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestHeader;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class MyController {

    @GetMapping("/api")
    public String handleRequestHeader(@RequestHeader("User-Agent") String userAgent) {
        return "User-Agent: " + userAgent;
    }
}

위의 예제에서 handleRequestHeader 메서드는 User-Agent 헤더 값을 매개변수로 받아 반환합니다.

2. 기본 값과 필수 값 지정하기

@RequestHeader 어노테이션을 사용하여 기본 값과 필수 값 지정이 가능합니다.

예제 1: 기본 값 지정

import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestHeader;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class MyController {

    @GetMapping("/api")
    public String handleRequestHeader(@RequestHeader(value = "User-Agent", defaultValue = "Unknown") String userAgent) {
        return "User-Agent: " + userAgent;
    }
}

위의 예제에서는 User-Agent 헤더가 없을 경우 기본 값으로 "Unknown"을 사용합니다.

예제 2: 필수 값 지정

import org.springframework.http.HttpStatus;
import org.springframework.web.bind.MissingRequestHeaderException;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestHeader;
import org.springframework.web.bind.annotation.ResponseStatus;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class MyController {

    @GetMapping("/api")
    public String handleRequestHeader(@RequestHeader("User-Agent") String userAgent) {
        return "User-Agent: " + userAgent;
    }

    @ExceptionHandler(MissingRequestHeaderException.class)
    @ResponseStatus(HttpStatus.BAD_REQUEST)
    public String handleMissingRequestHeader() {
        return "Required header is missing";
    }
}

위의 예제에서는 User-Agent 헤더가 필수로 요구되며, 해당 헤더가 없는 경우 예외를 처리합니다.

3. 예제 코드

다음은 @RequestHeader 어노테이션을 사용한 예제 코드입니다.

예제 1: 기본적인 @RequestHeader 사용법

import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestHeader;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class MyController {

    @GetMapping("/api")
    public String handleRequestHeader(@RequestHeader("User-Agent") String userAgent) {
        return "User-Agent: " + userAgent;
    }
}

예제 2: 기본 값과 필수 값 지정

import org.springframework.http.HttpStatus;
import org.springframework.web.bind.MissingRequestHeaderException;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestHeader;
import org.springframework.web.bind.annotation.ResponseStatus;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class MyController {

    @GetMapping("/api")
    public String handleRequestHeader(@RequestHeader(value = "User-Agent", defaultValue = "Unknown") String userAgent) {
        return "User-Agent: " + userAgent;
    }

    @ExceptionHandler(MissingRequestHeaderException.class)
    @ResponseStatus(HttpStatus.BAD_REQUEST)
    public String handleMissingRequestHeader() {
        return "Required header is missing";
    }
}

4. 결론

이상으로 Spring의 @RequestHeader 어노테이션에 대한 자세한 설명과 예제 코드를 살펴보았습니다. @RequestHeader 어노테이션을 사용하여 HTTP 요청의 헤더 정보를 쉽게 처리할 수 있습니다.