쌓고 쌓다

API 응답 포맷 만들기 본문

프로그래밍/spring

API 응답 포맷 만들기

승민아 2023. 12. 2. 19:12

@ResponseBody 어노테이션 또는 @RestController 어노테이션을 사용하여 객체를 반환하면

HttpMessageConverter가 JSON으로 바꿔 응답을 해준다.

@GetMapping("/testAPI")
public Inquiry test() {
    Inquiry inquiry = new Inquiry();
    inquiry.setId(777L);
    inquiry.setTitle("제목");
    inquiry.setContent("내용");
    inquiry.setRegDate(LocalDateTime.now());
    inquiry.setName("작성자");
    return inquiry;
}

 

응답

 

 

ResponseEntity를 사용하여 응답을 만들 수 있지만

예외가 발생했을때 응답의 형태가 달라질 수 있고, 응답 body로 plain/text가 전달된다.

 

그래서 API 응답 포맷을 만들어서 사용해보자.

 

status : 성공(success), 실패(fail), 예외(error)

data : 성공일 경우 데이터를 갖는다. 오류(fail)일 경우 유효성 관련 문제로 검증 실패의 정보를 담는다.

message : 메시지를 담을 수 있다.

 

예외나 에러에 대한 응답은 추후에 만들어보자.

 

성공적인 응답만 볼 예정이다.

 

1) 성공 응답

{
    "status": "success",
    "data": [
        {
            "id": 11,
            "name": "name!",
            "title": "title!",
            "content": "content!",
            "regDate": "2023-11-20T14:04:14"
        }
    ],
    "message": "성공했다."
}

 

 

이런 응답을 내보내게 위해 아래의 클래스를 작성할 수 있다.

@Getter
@Setter
public class ApiResponse<T> {

    public static final String SUCCESS_STATUS = "success";
    public static final String FAIL_STATUS = "fail";
    public static final String ERROR_STATUS = "error";

    private String status;
    private T data;
    private String message;


}

 

제네릭이 뭐야? 왜 Object를 쓰면 그만 아니야? 라는 생각에 아래의 포스트를 작성했었다.

https://non-stop.tistory.com/630

 

빨리 예외처리API도 만들어보고싶다.!

Comments