ResponseEntity / HttpHeader / HttpEntity / RestTemplate

소만이·2024년 4월 15일
post-thumbnail

ResponseEntity

  • 스프링 프레임워크에서 제공되는 클래스 중 하나로, HTTP 응답을 처리하고 생성하는데 사용된다.
    스프링의 웹 애플리케이션에서 컨트롤러 메소드가 HTTP 요청에 대한 응답을 반환할 때 ResponseEntity를 사용하여 상태 코드, 헤더, 본문을 포함하는 완전한 HTTP 응답을 생성할 수 있다.

상태 코드(Status Code):
-ResponseEntity는 HTTP 상태 코드를 설정할 수 있다. 예를 들어, OK, NOT_FOUND, BAD_REQUEST 등 다양한 상태 코드를 지정할 수 있다.

헤더(Header):
-응답에 포함될 HTTP 헤더를 설정할 수 있다. 예를 들어, Content-Type, Authorization 등의 헤더를 지정할 수 있다.

본문(Body):
-응답의 본문에 포함될 데이터를 설정할 수 있다. 예를 들어, 객체, 문자열, JSON 등 다양한 형식의 데이터를 본문으로 설정할 수 있다.

RestTemplate

-스프링 프레임워크에서 제공하는 HTTP 클라이언트이다. 이를 통해 RESTful 웹 서비스와 통신할 때 HTTP요청을 보내고 응답을 받을 수 있다.

HTTP 요청 보내기:
-GET, POST, PUT, DELETE 등 다양한 HTTP 요청 메소드를 지원한다.
URL과 요청 본문, 헤더 등을 지정하여 요청을 보낼 수 있다.

응답 처리:
-RestTemplate을 사용하여 요청을 보낸 후 응답을 받을 수 있다.
응답의 본문, 상태 코드, 헤더 등을 쉽게 액세스할 수 있다.

객체 매핑:
-응답 본문을 JSON이나 XML 등의 형식에서 자바 객체로 매핑할 수 있다.
RestTemplate은 이러한 데이터 형식 변환을 자동으로 수행한다.

예외 처리:
-요청을 보낼 때 발생할 수 있는 예외를 적절히 처리할 수 있다.
RestTemplate은 HTTP 오류 상태 코드를 예외로 변환하여 던져줄 수 있다.

HttpHeader

  • Http 요청과 응답에서 사용하는 헤더를 관리하는 클래스다.
    Http헤더는 요청 및 응답에 대한 추가적인 정보를 전달하는데 예를 들어 'Content-Type', 'Authorization', 'Accept' 등의 헤더를 설정하거나 읽을 수 있다.

HttpEntity

-HttpEntity는 HTTP 요청이나 응답의 본문과 헤더를 함께 나타내는 클래스이다.
HttpEntity는 본문과 헤더를 포함하여, 이를 통해 요청이나 응답에 대한 정보를 캡슐화한다.

프로젝트를 진행할 때 Jira 에 REST API로 요청을 보내 데이터를 가져올 일이 있었는데,
HttpHeader, HttpEntity, ResponseEntity, RestTemplate 를 이용해 한 적이 있어 정리를 해보려고 한다.

 public ResponseEntity<JiraCloudData> getAllIssueByProjectKeyFromCloud(String jiraBaseURL, String userName, String passWord, String projectKey) {
        String cloudUrl = String.format("", jiraBaseURL, projectKey);
        HttpHeaders headers = new HttpHeaders();
        headers.setBasicAuth(userName, passWord);

        HttpEntity<String> request = new HttpEntity<>(headers);
        ResponseEntity<JiraCloudData> response = this.restTemplate.exchange(cloudUrl, HttpMethod.GET, request, JiraCloudData.class);

        return response;
    }

HttpHeaders 를 이용해 요청헤더 설정을 하고 HttpEntity는 요청 헤더를 캡슐화한다.
ResponseEntity를 사용하여 REST API로부터 받은 HTTP응답을 처리한다.
RestTemplate를 사용하여 GET 요청을 보내고 ResponseEntity를 사용하여 응답 본문을 JiraCloudData 타입으로 매핑을 한다.

0개의 댓글