ResponseEntity
ResponseEntity는 HTTP 응답을 나타내는 Spring Framework의 클래스이다.
이 클래스는 요청에 대한 응답의 HttpHeader, HttpBody 및 Status Code를 포함하여 클라이언트에게 전달할 수 있는 다양한 기능을 제공한다.사용하는 이유
HTTP 상태 코드 제어 : ResponseEntity를 사용하면 응답에 대한 HTTP 상태 코드를 명시적으로 지정할 수 있다. 이는 클라이언트에게 정확한 상태 정보를 제공하는 데 도움이 된다. 간단하게 설명하면, 프론트 개발자가 에러를 명확하게 파악하는데 도움을 준다.
HttpHeader
HTTP 헤더는 HTTP 메시지의 메타데이터를 포함하는 부분으로, 요청 또는 응답의 성격을 정의하거나 추가 정보를 전달하는 역할을 한다. 헤더는 키-값 쌍으로 구성되며, 각 키와 값은 문자열이다.
- 클라이언트와 서버 간 정보 전달
클라이언트가 서버로 요청을 보낼 때나 서버가 클라이언트로 응답을 보낼 때 부가적인 정보를 전달할 수 있다.
ex) Content-Type, Authorization, User-Agent, Accept-Language 등.HttpBody
HTTP 바디는 HTTP 메시지의 본문 부분으로, 실제 데이터가 포함된다.
HTTP 요청과 응답 모두 바디를 가질 수 있으며, 주로 데이터를 전달하는 데 사용된다.Ex)
@PostMapping public ResponseEntity<String> write(NoticeVo vo){ System.out.println("NoticeApiController.write"); System.out.println("vo = " + vo); vo.setWriterNo("1"); int result = service.write(vo); if(result == 1){ return ResponseEntity.ok( "작성하기 성공!" ); }else{ return ResponseEntity.internalServerError().body("작성하기 실패"); } }ResponseEntity.ok()를 사용하여 응답을 생성하면, HTTP 응답의 상태 코드는 200 OK로 설정되며, 응답 본문은 바디에 담기고, 헤더에는 상태 코드와 함께 필요한 추가 헤더가 포함될 수 있다.
응답 바디 : "Hello, World!"라는 문자열이 응답 바디에 담긴다.
상태 코드 : ok() 메서드를 사용했기 때문에 상태 코드는 자동으로 200 OK로 설정된다.
헤더 : 특별히 추가하지 않는 한, 기본적인 HTTP 헤더만 포함된다. 예를 들어 Content-Type 헤더는 자동으로 설정될 수 있다.//html본문 응답 HTTP/1.1 200 OK Content-Type: text/plain;charset=UTF-8 작성하기 성공!ResponseEntity.internalServerError().body("작성하기 실패")와 같은 코드는 HTTP 응답의 상태 코드를 500 Internal Server Error로 설정하고, 응답 본문에 "작성하기 실패"라는 메시지를 담아 반환한다. 이를 통해 서버에서 내부 오류가 발생했음을 클라이언트에게 알릴 수 있다.
응답 바디 : "작성하기 실패"라는 문자열이 응답 바디에 담긴다.
상태 코드 : internalServerError() 메서드를 사용했기 때문에 상태 코드는 자동으로 500 Internal Server Error로 설정된다.
헤더 : 특별히 추가하지 않는 한, 기본적인 HTTP 헤더만 포함된다.//html본문 응답 HTTP/1.1 500 Internal Server Error Content-Type: text/plain;charset=UTF-8 작성하기 실패