ResponseEntity
spring Framework에서 제공하는 클래스 중 HttpEntity
라는 클래스가 존재한다.
이것은 HTTP 요청(Request) 또는 응답(Response)에 해당하는 HttpHeader와 HttpBody를 포함하는 클래스이다.
HttpEntity 클래스를 상속받아 구현한 클래스가 Request
Entity, Response
Entity 클래스이다.Response
Entity는 사용자의 HttpRequest에 대한 응답 데이터를 포함
하는 클래스이다. 따라서 HttpStatus, HttpHeaders, HttpBody를 포함한다.
↳ 기본형
HttpStatus : 200이면 success라는 것은 200, 400이면 bad_request
xhr.responseText
를 통해 보여줄 수 있다.ResponseEntity 메시지 응답 형식
- 일반 자료형인 경우에는 응답내용을 200번 정상코드일 때만 응답(전제조건)을 해주기 때문에, 200일경우 json문자열로 알아서 자동 converting 해주는데 (성공했을 때!만! 반환타입형태로 return됨)
- responseEntity는 200번 정상 응답인 경우가 될 수도, 에러응답일 경우도 있어서 responseEntity는 메시지에 대한 응답형식은 따로 지정 해줘야함(성공일때도, 실패일때도)
produces = MediaType.APPLICATION_JSON_VALUE
: 성공, 실패일때 json형태로 응답해준다.
⬇︎ produces 추가 후 변경
그래서 status badRequest써야해? INTERNAL_SERVER_ERROR써야해?
- 200번이 아니면 무조건 잘못된 코드임
- 400번
Bad_REQUEST
:요청이 잘못된 경우- HttpStatus.
INTERNAL_SERVER_ERROR
: 백엔드에서 문제가 있어서 응답을 제대로 못한 경우
-> 뭘 써야한다는 규약은 없음. 상황에 따라 적절히 사용하면 됨
↳INTERNAL_SERVER_ERROR 일 경우 나타나는 메시지(프론트에서 보여줘야함)
메서드 응답이 실패했을 때 상세한 메시지를 사용자에게 알릴 필요가 있는가?
- 알리면 안됨 -> 메시지를 보고 해킹을 하러 들어올 수도 있다.(보안문제)
- 성공이 되지 않은 상태임만 알리면 된다.
- 로그인 실패와 같이 msg없이 Http.Status정도만 알리기
- 분기처리로 상태코드 처리 자체를 다양하게 해줘라. -> 사용자가 오류 상태코드를 알리면, 운영자가 역추적을 통해 분기처리한 걸 통해서 알아내고 알려주면 됨 (네트워크 콘솔창 통해서 code 확인 후, 아래처럼 분기처리확인)