Spring Framework에서 제공하는 클래스 중 HttpEntity라는 클래스가 존재한다.
이것은 HTTP 요청(Request) 또는 응답(Response)에 해당하는 HttpHeader와 HttpBody를 포함하는 클래스이다.
HttpEntity 클래스를 상속받아 구현한 클래스가 RequestEntity, ResponseEntity 클래스이다.
이번에 포스팅 할 ResponseEntity는 사용자의 HttpRequest에 대한 응답 데이터를 포함하는 클래스이다.
따라서 HttpStatus, HttpHeaders, HttpBody를 포함한다.
다만, Response를 출력하는 로직을 만드는데 있어 굳이 ResponseEntity를 쓸 필요는 없다.
Spring에서 제공하는 도구이며, ResponseEntity 없이도 응답을 관리하는 방법은 존재하기때문이다
다만 Spring 의존도가 상당히 높아진 시국이니만큼, 이걸 쓰는방법은 알아둬야 한다고 생각한다.
ResponseEntity의 생성자는 다양하게 제공하는 식이며, 대표적으로 이걸 자주쓰는 것으로 보인다.
public ResponseEntity(@Nullable T body, @Nullable MultiValueMap<String, String> headers, HttpStatus status) {
this(body, headers, (Object) status);
}
body -> 응답에 넣을 body영역, String으로 넣든 xml로넣든 json으로 넣든
header -> HttpHeaders 객체 또는 MultiValueMap 사용 가능
HttpStatus -> HttpStatus 코드 넣기, HttpStatus.OK HttpStatus.SERVICE_UNAVAILABLE
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
|
public class ResponseBodyVO {
private String code;
private String message;
private String status;
}
@PostMapping(value= "/responsecheck")
public ResponseEntity responseEntityCheck(@RequestHeader String co1,
@RequestHeader String co2,
@RequestBody Ticket to1) {
HttpHeaders headers= new HttpHeaders();
headers.setContentType(new MediaType("application", "json", Charset.forName("UTF-8")));
headers.add("co1", co1);
headers.add("co2", co2);
headers.add("co3", "accumpany"); // 헤더 임의로 추가 가능
ResponseBodyVO responseBody = new ResponseBodyVO(); // 커스텀 Body 영역 생성
responseBody.setCode(co2);
responseBody.setMessage(to1.toString());
responseBody.setStatus(HttpStatus.OK.toString());
ResponseEntity result = new ResponseEntity(responseBody, headers, HttpStatus.SERVICE_UNAVAILABLE);
// ResponseEntity 아웃풋 여러 방법으로 선언 가능
// return new ResponseEntity(HttpStatus.OK);
// return new ResponseEntity(bo1, HttpStatus.SERVICE_UNAVAILABLE);
// return new ResponseEntity(responseBody, headers, HttpStatus.SERVICE_UNAVAILABLE);
return result;
}
|
cs |
예시로 ResponseEntity를 응답으로 내보내야 하는 소스이다.
header와 body를 받아 받은대로 응답하는 예제인데,
여기서 조건을 여러가지로 줘서 HttpStatus를 원하는데로 준다던지,
body를 바꾼다던지, header를 추가해준다던지 할 수 있다.
특히 ResponseEntity를 생성할 때 body나 헤더 같은 정보를 생성자체 추가하는 작업이 필요하다.
'IT기술 > spring' 카테고리의 다른 글
[spring] Logging Facade(로깅 퍼사드) 와 Logger(로거) (0) | 2023.07.13 |
---|---|
[spring]배너 바꾸기 (0) | 2023.07.11 |
[spring] 예외처리 @ControllerAdvice, @ExceptionHandler를 이용한 예외처리 분리, 통합하기(Spring에서 예외 관리하는 방법, 실무에서 활용하는 방법) (0) | 2023.06.08 |
[spring] logback 사용하기(slf4j 선언) (0) | 2023.06.01 |
[spring] logging 방법 slf4j 이 무엇인가? 정리해보자. (0) | 2023.05.11 |