HTTP Request Body, Header 값 받기

Back-end/Spring

HTTP Request Body, Header 값 받기

조커린 2021. 7. 3. 19:38

1. Request Header

@RequestHeader("header의 값")

HTTP request의 Header를 위의 애노테이션으로 받을 수 있다.

@RequestMapping("/displayHeaderInfo.do")
public void displayHeaderInfo(@RequestHeader("Accept-Encoding") String encoding, 
	@RequestHeader("Keep-Alive") long keepAlive)  {
	============
}

이런 식으로 받을 수 있다. 

Request Header의 값을 자바 값으로 치환해주는 애노테이션이다.

 

2. Request Body

HTTP  Request의 Body부분을 자바의 객체로 변환시켜줌 

@RequestBody

 

3. RequestParam

@RequestParam(required= ~ , name="param name") ~

Request URL의 쿼리 파라미터를 가지고 와 줌 

변수의 이름과  쿼리 파라미터의 이름을 같게 맞춰줄 시에는 하단의 예제로

@GetMapping("/api/foos")
@ResponseBody
public String getFoos(@RequestParam String id) {
    return "ID: " + id;
}

변수의 이름과 쿼리 파라미터의 이름이 다를 경우 하단의 예제로

@PostMapping("/api/foos")
@ResponseBody
public String addFoo(@RequestParam(name = "id") String fooId, @RequestParam String name) { 
    return "ID: " + fooId + " Name: " + name;
}

쿼리 파라미터가 필요할 수도, 안 필요할 수도 있을 때에는 required 옵션을 붙여준다. 

@GetMapping("/api/foos")
@ResponseBody
public String getFoos(@RequestParam(required = false) String id) { 
    return "ID: " + id;
}

defaultValue를 이용해 query param이 없을 경우엔 

디폴트 값 세팅 가능

예시

@GetMapping("/api/foos")
@ResponseBody
public String getFoos(@RequestParam(defaultValue = "test") String id) {
    return "ID: " + id;
}

a.

http://localhost:8080/api/foos

----

ID: test

 

b.

http://localhost:8080/api/foos?id=abc

----

ID: abc