728x90
web 패키지
└ model 패키지
└ ApiModel
└ Model
└ AController
📌ApiModel
public class ApiModel<T> {
LocalDateTime timestamp;
HttpStatus httpStatus;
T body;
public ApiModel(LocalDateTime timestamp, HttpStatus httpStatus, T body) {
this.timestamp = timestamp;
this.httpStatus = httpStatus;
this.body = body;
}
public static <T> ApiModel createApiModel(LocalDateTime timestamp, HttpStatus httpStatus, T body) {
return new ApiModel<>(timestamp, httpStatus, body);
}
}
API 규격으로는 timestamp / httpStatus / body 로 정했다.
timestamp에 날짜, 시간을 기록한다. (예. LocalDateTime.noew() )
httpStatus에 http 응답 코드를 넣는다.
body로는 에러가 발생할 경우 에러 메시지를, 정상 응답일 경우 응답 값을 넣는다.
📌Model
package kr.co.gpgp.web.model;
import java.time.LocalDateTime;
import org.springframework.http.HttpStatus;
public class Model {
static final <T> ApiModel success(T t) {
return ApiModel.createApiModel(LocalDateTime.now(), HttpStatus.OK, t);
}
static final <T> ApiModel fail(HttpStatus httpStatus, T t) {
return ApiModel.createApiModel(LocalDateTime.now(), httpStatus, t);
}
}
컨트롤에 적용하기
📌 컨트롤러
@RequestMapping("api1")
@RestController
public class AController {
@GetMapping("/a")
public <T> ApiModel<T> abc() {
return success(null);
}
@GetMapping("/b")
public <T> ApiModel<T> kk() {
return fail(HttpStatus.BAD_REQUEST, null);
}
}
Model 클래스를 static import하고 success() 메서드와 fail() 메서드를 호출하여 ApiModel을 반환한다. 파라미터를 null 대신 응답 값을 넣어야 한다.
728x90
'[ Spring ] > REST API' 카테고리의 다른 글
[Spring] Spring Security를 이용한 인증 처리 (0) | 2022.05.11 |
---|---|
[Spring] HAL Explorer를 이용한 Hateoas 기능 구현 (0) | 2022.05.11 |
[Spring] Rest Api Monitoring을 위한 Actuator 설정 (0) | 2022.05.11 |
[Spring] Rest API Documentation을 위한 Swagger 사용 (0) | 2022.05.10 |
[Spring] API 구현을 위한 Hateoas 적용 (0) | 2022.05.10 |