express에서 OpenAPI를 유형으로 사용

5904 단어 tech

이른바 Open API


Open API는 RESTful API를 설명하는 형식입니다.yaml 형식 등으로 기술할 수 있고, 스웨거 에디터 등을 이용해 웹에서 다음과 같이 정의된 API를 열람할 수 있다.
최근에는 이 yaml 파일에서 Type Script 유형을 생성하는 구조도 있는데 제가 사용하도록 해주세요https://github.com/horiuchi/dtsgenerator.
이것은 OpenAPI의 규격에 따라yaml 파일에서 d.ts를 토출하는 프로그램 라이브러리는 매우 편리하지만,ts로express를 쓰려고 할 때,express가 생성한 유형을 어떻게 연결하는지 고민입니다.
그래서 이번에는 dtsgenerator에서 생성한 코드를 이용하여express를 생성하는 TypeScript 파일의 생성기를 만들었습니다.
저는express-ts-generator입니다.

사용법


먼저 설치


$ npm install dtsgenerator express-ts-generator --save-dev
openapi.yml 생성 파일 지정하기
$ npx dtsgen openapi/openapi.yaml -o ./src/@types/openapi.d.ts && npx apigen -s ./src/@types/openapi.d.ts -d ./src/@types/api.ts
이 실행되면 다음 파일과 같이 express의 Controller 옆에 있는 TypeScript 파일이 생성됩니다.
import { Controller } from 'express-ts-generator';

export namespace Music$MusicIdController {
  export type Get = Controller<{
    response: Paths.Music$MusicId.Get.Responses.$200;
  }>;
}
export namespace MusicsController {
  export type Get = Controller<{
    response: Paths.Musics.Get.Responses.$200;
  }>;
  export type Post = Controller<{
    body: Paths.Musics.Post.RequestBody;
  }>;
}
express 측면에서 활용
import { SomeController } from './types/api';
export const Post: SomeController.Post = async (
  request,
  response
): Promise<void> => {
  // request and response will be typed automatically
};

export const Get: SomeController.Get = async (
  request,
  response
): Promise<void> => {
  // request and response will be typed automatically
};
사용하면 이런 느낌으로 리퀘스트와response의 유형을 강력하게 보충합니다!
가능하다면, github가 스타가 될 수 있다면 나는 매우 기쁠 것이다!
https://github.com/steelydylan/express-ts-generator
express의 리퀘스트든response든 모두 형식이 첨부되어 있어 프로그래밍이 매우 순조롭다.

좋은 웹페이지 즐겨찾기