<위는 라이브러리 시연 영상입니다.>
협업 과정에서 팀원이 특정 REST API를 연결했는지, 현재 진행 상황은 어떤지 파악하기 어려울 때가 많습니다. Swagger 같은 문서화 도구도 이런 연결 상태를 체크하는 기능이 없어 아쉬움이 있었습니다.
그래서, REST API 연결 상태를 관리하고 모니터링할 수 있는 API Link Checker라이브러리를 소개해보려고 합니다!
0.1.0 : 닉네임 설정 기능 추가.
API의 연결 상태를 UI에서 확인 및 관리 가능합니다.
이 기능으로 FE에서 연결한 API인지 아닌지를 확인할 수 있습니다.
http(s)://{domain}:{port}/api-checker/index.html에 접속하면 API 상태를 한눈에 확인하고 관리할 수 있습니다.
UI에서 버튼 하나로 바로 해당 API 내용에 대한 Swagger 문서로 이동할 수 있습니다.
API 상태와 설정 데이터를 JSON 파일로 로컬에 저장하여 재실행하더라도 정보가 유지됩니다.
데이터베이스가 필요 없고, 간단히 설정 파일을 옮기는 것만으로 다른 환경에서도 동일하게 사용할 수 있습니다.
(docker를 사용하여 배포할 경우, 마운트를 해서 파일을 유지해주어야합니다!)
<dependency>
<groupId>io.github.daeyoung0726</groupId>
<artifactId>api-link-checker</artifactId>
<version>{version}</version>
</dependency>
implementation 'io.github.daeyoung0726:api-link-checker:{version}'
implementation 'io.github.daeyoung0726:api-link-checker:0.1.0'
Spring Boot 애플리케이션에서 아래와 같이 @EnableApiLinkChecker애너테이션을 추가하면 바로 활성화됩니다.
@SpringBootApplication
@EnableApiLinkChecker // Api-Link-Checker 활성화
public class MyApplication {
public static void main(String[] args) {
SpringApplication.run(MyApplication.class, args);
}
}
application.yml 또는 application.properties에서 저장 경로를 설정합니다.
아래 설정을 하지 않으면, 프로젝트 내에 저장되게 됩니다. (재배포시, 내용이 사라질 가능성이 있음.)
api:
checker:
storage:
filepath: ${user.home}/{custom-file-name}.json
ex) ${user.home}/api-status.json
@ApiGroup과 @TrackApi 애너테이션으로 API 그룹과 메서드를 정의할 수 있습니다.
@ApiGroup(value = "사용자 API") // API 그룹 생성
@RestController
@RequestMapping("/users")
public class UserController {
@TrackApi(description = "사용자 정보 가져오기") // API 추가
@GetMapping("/{userId}")
public ResponseEntity<User> getUser(@PathVariable Long userId) {
// 사용자 정보 조회 로직
}
@TrackApi(description = "사용자 등록하기") // API 추가
@PostMapping("/register")
public ResponseEntity<String> registerUser(@RequestBody UserDto userDto) {
// 사용자 등록 로직
}
}
브라우저에서 http(s)://{domain}:{port}/api-checker/index.html에 접속하면 API 상태를 확인하고 관리할 수 있습니다.
최신 버전 0.0.6을 사용하세요! 이전 버전에는 오류가 있습니다.
(최신 버전 - 0.1.0)
설정 파일 구성으로 이동하기 를 적용하지 않으면 정보 유지를 보장할 수 없습니다.
docker를 통해 배포를 할 시, 마운트를 통해 정보를 유지해주어야 합니다.
