HttpStatus, HttpHeaders, HttpBody 데이터를 갖는 ResponseEntity 클래스를 활용한다.
HTTP 응답의 상태 코드, 헤더, 본문을 유연하게 제어할 수 있다.
@GetMapping("/login")
public ResponseEntity<Member> login(String email, String password, HttpServletRequest httpServletRequest) {
...
return new ResponseEntity<Member>(member, httpHeaders, HttpStatus.OK);
}
JSend는 웹 서버의 JSON 응답 형식을 지정하는 방법에 대한 몇 가지 규칙을 규정 한 사양이다.
JSON 데이터를 제공하는 많은 웹 서비스가 있고, 각각 고유한 형식의 응답 형식이 있다. 근데, 데이터를 구성하는 데는 공통적인 패턴은 많이 있지만, naming 또는 types of response와 같은 항목에는 약속이 없다.
또한 모든 사람이 서로 상호 작용하는 일반적인 접근 방식을 기대할 수 있기 때문에 상호간의 통일성을 개선하는데 도움이 된다.
JSend는 상태(status), 데이터(data), 메시지(message), 오류 코드(code 등)를 명확하게 구조화한다.
@Getter
@Setter
public class ResponseCommonVo<T> implements Serializable{
private Integer status;
private T data;
private String message;
private ResponseCommonVo() {
}
private static <T> ResponseCommonVo result(int status, String message, T data) {
ResponseCommonVo responseCommonVo = new ResponseCommonVo();
responseCommonVo.status = status;
responseCommonVo.message = message;
responseCommonVo.data = data;
return responseCommonVo;
}
public static <T> ResponseCommonVo success(T data) {
return success(200, "OK", data);
}
public static <T> ResponseCommonVo fail(String message) {
return result(0, message, null);
}
public static <T> ResponseCommonVo error401(){
return result(401, "UnAuthorized", null);
}
public static <T> ResponseCommonVo error404(){
return result(404, "Not Found", null);
}
...
}
status, message, data 만 사용하여 간단히 구현하였다.
Enum을 사용하여 status와 message를 깔끔하게 정리할 수 있을것이다.
SpringBoot CSV Read / Write (opencsv) (8) | 2024.09.12 |
---|---|
Optional 사용에 대한 고찰 (사용목적, 메서드, 주의사항) (0) | 2024.09.06 |
[JAVA] LocalDate (날짜와 시간) 내일, 월말, 월초, 년말, 년초, 윤년 구하기 (0) | 2024.08.27 |
PageHelper를 이용한 페이징처리 (Mybatis) (0) | 2024.08.27 |
[JAVA] - Iterator란 (26) | 2024.03.16 |
댓글 영역