前回、前々回でサーバーサイドのTypescript化およびDBアクセスまでできるようになりました。
前々回:Nest.js を使ってみる
前回:Nest.jsでSequelizeを使ってみる
今回はクライアントサイドからアクセスする部分を作ります。
Nest.jsデフォルトでも良いのですが、RestAPI標準規格(になると噂)のOpenAPI(旧Swagger)を導入したいと思います。
(2019/12/11追記)
最新のnestjs/swaggerではOpenAPI(Swagger3.0)に対応しているため、このページの内容は古くなっています。
nestjs/swagger4系についての記事も書いていますので、そちらを参照ください。
nestjs/swagger 3系(Swagger2.0)⇒4系(Swagger3.0(OpenAPI))へのバージョンアップ
OpenAPI(Swagger)とは
OpenAPI - Swagger:https://swagger.io/docs/specification/about/
これを導入すると、API仕様書を出力してくれるだけではなく、APIのテストができたりとかなり便利なツールです!
さらにopenapi-generatorを使うことでクライアントサイドからアクセスするためのAPIクライアントも自動生成できる(Angular用のコード出力もできます)ため、開発工数をぐっと減らすことができます
導入
Nest.js公式に導入方法が書いてありますので、それに従います。
@nestjs/swaggerのインストール
npm install --save @nestjs/swagger swagger-ui-express
main.tsでSwaggerのセットアップ
import { NestFactory } from '@nestjs/core';
import { SwaggerModule, DocumentBuilder } from '@nestjs/swagger';
import { ApplicationModule } from './app.module';
async function bootstrap() {
const app = await NestFactory.create(ApplicationModule);
const options = new DocumentBuilder()
.setTitle('Cats example')
.setDescription('The cats API description')
.setVersion('1.0')
.addTag('cats')
.build();
const document = SwaggerModule.createDocument(app, options);
SwaggerModule.setup('api', app, document);
await app.listen(3000);
}
bootstrap();
準備はこれだけです!
起動してみる
docker-compose up
で起動し、ブラウザで/api
にアクセスしてみます。
めちゃくちゃ簡単です!!!
JSON形式で出力
/api-json
にアクセスすると、JSON形式で出力することもできます。