Swagger 문서를 이용한 자동 타입 생성기
본 글은 Typescript와 axios환경에 swagger-tyescript-api를 적용한 글입니다.
결과물부터 보여주자면 아래와같이 모든 Type이 생성된것을 볼 수 있다.
본인은 swagger-typescript-api를 사용하였다. Swagger-codegen, OpenAPI Generator도 있는데 왜? 라고 할 수 있다. 해당 2개의 라이브러리는 범용성도 좋고 널리쓰이긴하나, swagger-typescript-api처럼 생성시 type만을 분리하여 생성하거나, 사람이 보기편하게 type, api를 생성해주진 않았다.
(2가지다 먼저 사용해보았으나 type만 생성하고싶은데 api가 4가지방식으로 생성되거나 type파일만 분리되어 생성되지 않고, api와 type을 한파일에 생성하는 등 문제가 많았다... 물론 필자가 문서에서 적절한 방법을 못찾아서 그럴 수 도 있으나 다른 사람들도 해당 부분이 불편하여 swagger-typescript-api를 만들고 꽤 많은 유저가 있는것이 아닐까...?😂)
아래의 커맨드로 swagger-typescript-api를 설치하자.
npm i swagger-typescript-api
또는
yarn add swagger-typescript-api
package.json에 실행 커맨드를 추가하자.
"swagger-typescript-api": "swagger-typescript-api -p {Swagger 문서 Path!} -r -o {생성 결과로 지정할 경로} --modular -d --extract-request-body --extract-response-body --extract-response-error --axios",
명령어를 하나하나 살펴보면 아래와같다.
아래의 사진의 가려진부분이 path로 사용될 swagger docs url이다.
실제로 해당 url을 가보면 아래와같이 json형식으로된 swagger docs파일을 확인할 수 있다.(이를 이용해 data를 받아와 type을 생성하는것이다)
위의 예시를 토대로 완성한 실행 커맨드는 아래와 같다.
"swagger-typescript-api": "swagger-typescript-api -p https://test.swaggerdocs.com/swagger/?format=openapi -r -o ./models --modular -d --extract-request-body --extract-response-body --extract-response-error --axios"
실행시 아래의 사진과같이 models폴더에 API파일과 data-type파일이 생성된걸 볼 수 있다.
서버쪽에서 API작성시 Swagger 문서만 정확하게, 친절하게 작성해놓는다면🥲,
프론트단에서는 커맨드만 실행하면 자동으로 문서에 작성된 모든 API, Type을 얻을 수 있다!!!
아주아주 강력하고 편리한 기능이므로 Rest API, Typescript 환경이라면 꼭 사용해보길 바란다.
참고 링크 :
https://www.npmjs.com/package/swagger-typescript-api