Spring RestController 사용시, RequestHeader값 가져오기 공부하는 것/Spring Framework2019. 1. 15. 20:21
스프링프레임워크를 사용해서 Restful API를 개발할때, RequestHeader 정보를 가져오는 방법이다.
요즈음에 대세가된 SpringBoot를 이용할 경우에 다른 설정은 크게 필요하지는 않다.
"@RestController"를 이용하여, 컨트롤러를 선언해주고, "@GetMapping" 어노테이션을 이용하여, "http://localhost:8080/headerinfo" 라고 호출하였을때, 실행되도로 정의했다. 이때 호출되는 RequestHeader값은 "@RequestHeader" 어노테이션을이용하여 "headers"라는 변수를 통해서 넘겨받을 수 있다.
package net.happyzoo.happzoo;
import lombok.extern.slf4j.Slf4j;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.http.HttpHeaders;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestHeader;
import org.springframework.web.bind.annotation.RestController;
import reactor.core.publisher.Mono;
import java.util.Map;
@SpringBootApplication
@Slf4j
public class HappzooApplication {
@RestController
public static class GetControllerPractice
{
@GetMapping("/headerinfo")
Mono<Map<String, String>> getHeaderInfo(@RequestHeader HttpHeaders headers)
{
log.info(headers.toSingleValueMap().toString());
return Mono.just(headers.toSingleValueMap());
}
}
public static void main(String[] args) {
SpringApplication.run(HappzooApplication.class, args);
}
}
위는 Sample 코드이며, Lombok을 이용하여 @Slf4j를 선언해주면, 로그를 남길수 있도록 했는데, Lombok를 사용하지않으면, 선언에서 제외하면 된다.
실행 결과는 다음과 같이 Map의 형태로 반환해서 Mono로 전달하면 Client에서 결과값을 받을수 있다.
return Mono.just(headers.toSingleValueMap());
Terminal에서는
curl -X GET http://localhost:8080/headerinfo
IntelliJ에 내장된 Rest Client를 이용해서 호출한 결과이다. Json의 Object형태로 결과를 받아왔다.
'공부하는 것 > Spring Framework' 카테고리의 다른 글
Spring Framework 3.0 MVC(1) (0) | 2012.04.29 |
---|---|
Spring 3.0.0 Release Candidate 1 Released (0) | 2009.09.26 |
SpringSource Tool Suite is Now Free! (0) | 2009.05.10 |
Spring의 Roo Alpha 2에 대하여... (0) | 2009.05.04 |
Spring Dynamic Modules 1.1.3 Released (0) | 2009.02.16 |