Time does not change us. It just unfolds us.

Web/Else

[Web]ResponseEntity

소젬 2021. 10. 22. 13:46

HTTP(HyperText Transfer) 프로토콜 구조

  • 하이퍼텍스트(HTML) 문서를 교환하기 위해 만들어진 TCP/IP 기반 protocol(통신 규약).
  • 웹상에서 네트워크로 서버끼리 통신을 할때 어떠한 형식으로 서로 통신을 하자고 규정해 놓은 "통신 형식" 혹은 "통신 구조"
  • Stateless
  • 요청/응답 (request/response) 구조
  • start line / headers / body 로 구성
  • headers : general / request / entity header 로 구성
  • https://velog.io/@teddybearjung/HTTP-%EA%B5%AC%EC%A1%B0-%EB%B0%8F-%ED%95%B5%EC%8B%AC-%EC%9A%94%EC%86%8C

 

Web에서 HTTP 프로토콜의 헤더를 다루는 경우

ResponseEntity 사용

  • HttpEntity class :  Http 프로토콜을 이용하는 통신의 header와 body 관련 정보를 저장할 수 있게 함
  • 통신 메시지 관련 header와 body의 값들을 하나의 객체로 저장하는 것이 HttpEntity 클래스 객체
  • Request 부분일 경우 HttpEntity를 상속받은 RequestEntity가, Response 부분일 경우 HttpEntity를 상속받은 ResponseEntity가 하게 함
  • @ResponseBody와의 차이점 : https://heewon26.tistory.com/38

 

그 외 참고

 

import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.springframework.http.HttpEntity;
import org.springframework.http.HttpHeaders;
import org.springframework.http.MediaType;
import org.springframework.lang.Nullable;
 
@Slf4j
public class RestClient {
 
    protected HttpEntity<String> header(String jwt, @Nullable Object object) {
        HttpHeaders headers = new HttpHeaders();
        headers.setContentType(MediaType.APPLICATION_JSON);
        headers.setBearerAuth(jwt);
 
        String body = StringUtils.EMPTY;
        if (object != null) {
            ObjectMapper mapper = new ObjectMapper();
            try {
                body = mapper.writeValueAsString(object);
            } catch (JsonProcessingException e) {
                log.error(e.getMessage());
            }
        }
         
        return new HttpEntity<>(body, headers);
    }
}

'Web > Else' 카테고리의 다른 글

[Web]@ContollerAdvice, @ExceptionHandler 예외처리  (0) 2021.10.22
[Web]WAS  (0) 2021.10.22
[Web]RESTful  (0) 2021.10.22
[Web]MSA  (0) 2021.10.22
[Web]Spring Boot 관련 개념 참고 링크  (0) 2021.10.22