HTTP Status Code, ResponseEntity에 대해서

2023. 12. 23. 15:58·Back-end/Spring

들어가기

 HTTP 응답을 제어할 수 있는 ResponseEntity 객체에 대해서 알아보자.

 

ResponseEntity

 ResponseEntity는 HttpEntity를 상속하여 구현되어 있다. HttpEntity의 구현 필드를 살펴보자.

public class HttpEntity<T> {
    public static final HttpEntity<?> EMPTY = new HttpEntity();
    
    private final HttpHeaders headers;
    
    @Nullable
    private final T body;
    ...
}

 

 HttpEntity는 HttpHeader를 설정할 수 있는 필드와, 제네릭 타입으로 Body 필드를 가지고 있다. 다음으로 이를 상속하는 ResponseEntity의 필드를 보자.

public class ResponseEntity<T> extends HttpEntity<T> {
    private final HttpStatusCode status;
    ...
}

 

 ResponseEntity는 필드로 HttpStatus를 설정하는 필드를 가지고 있고, HttpEntity를 상속하기 때문에 HttpEntity의 필드들도 제어할 수 있다. 실제로 어떻게 프로젝트에서 적용할 수 있는지 다음 코드를 보자.

    @PostMapping("/api/articles")
    public ResponseEntity<Article> addArticle(@RequestBody AddArticleRequest request) {
        Article savedArticle = blogService.save(request);
        return ResponseEntity.status(HttpStatus.CREATED).body(savedArticle);
    }

    @GetMapping("/api/articles")
    public ResponseEntity<List<ArticleResponse>> findAllArticles() {
        List<ArticleResponse> articles = blogService.findAll()
                .stream()
                .map(ArticleResponse::new)
                .toList();

        return ResponseEntity.ok().body(articles);
    }

 

 ResponseEntity를 사용할 때에는 제네릭으로 사용한다. 즉, ResponseEntity<반환 타입>으로 지정한다. 위에서 설명했듯이 HTTP 응답에 필요한 요소로 HttpHeader, Body, HttpStatus를 입력해서 사용한다. 추가로, 사용할 때 Builder(빌더) 패턴을 사용하는 것을 권장하고 있다. 이렇게 사용하면 HttpStatus 코드를 잘못 입력하는 실수를 막을 수 있기 때문이다.

 

HTTP Status Code(HTTP 응답 코드)

  1. 200 OK : 요청이 성공적으로 수행되었음.
  2. 201 Created : 요청이 성공적으로 수행되었고, 새로운 리소스가 생겼음.
  3. 400 Bad Request : 유효하지 않은 요청으로 요청에 실패함.
  4. 403 Forbidden : 권한이 없어서 요청에 실패함.
  5. 404 Not Found : 요청한 자원의 리소스가 없어서 요청에 실패함.
  6. 500 Internal Server Error : 서버 오류로 요청 실패함.
저작자표시 비영리 변경금지 (새창열림)
'Back-end/Spring' 카테고리의 다른 글
  • Spring JDBC Bulk Insert 알아보기
  • @RequestBody, @ResponseBody에 대해서
  • @NoArgsConstructor, @AllArgsConstructor, @RequiredArgsConstructor에 대해서
SiwonHae
SiwonHae
프로그래밍을 공부하고 있는 학생입니다.
  • SiwonHae
    시원해의 블로그
    SiwonHae
  • 전체
    오늘
    어제
    • 전체보기 (148)
      • PS(Problem Solving) (94)
        • C (25)
        • C++ (33)
        • JAVA (36)
      • Algorithm & Data Structure (13)
      • Computer Science (12)
        • Network (2)
        • Design Pattern (10)
      • Back-end (5)
        • Spring (4)
      • Front-end (1)
        • React (1)
      • JAVA (4)
      • 정보처리기사 (17)
      • SQLD (2)
  • 블로그 메뉴

    • 홈
    • 방명록
    • 글쓰기
  • 인기 글

  • 최근 댓글

  • hELLO· Designed By정상우.v4.10.0
SiwonHae
HTTP Status Code, ResponseEntity에 대해서
상단으로

티스토리툴바