ResponseEntity

0

Spring

목록 보기
15/23
post-thumbnail

ResponseEntity

  • spring Framework에서 제공하는 클래스 중 HttpEntity라는 클래스가 존재한다.
    이것은 HTTP 요청(Request) 또는 응답(Response)에 해당하는 HttpHeader와 HttpBody를 포함하는 클래스이다.

  • HttpEntity 클래스를 상속받아 구현한 클래스가 RequestEntity, ResponseEntity 클래스이다.ResponseEntity는 사용자의 HttpRequest에 대한 응답 데이터를 포함하는 클래스이다. 따라서 HttpStatus, HttpHeaders, HttpBody를 포함한다.

    ↳ 기본형

  • HttpStatus : 200이면 success라는 것은 200, 400이면 bad_request

  • 백엔드에서 ResponseEntity<>를 통해서 응답 상태코드를 조절 할 수 있음. 프론트에서 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 확인 후, 아래처럼 분기처리확인)
profile
백엔드를 공부하고 있습니다.

0개의 댓글