[ Spring ]/REST API

[Spring] REST API 규격 정하기

쿠릉쿠릉 쾅쾅 2022. 5. 15. 23:15
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