Go Langで作成したAPIをSwagger UIで表示する

タイトルにあるようにSwaggerで作成したいのであれば、yamlを作成すればいい。 だけど、そんなことをするのは面倒くさい。 というのもNestJsではデコレーターを追加するだけで自動でSwagger UIを作成してくれた。 そこでGoでも同様な手順で実現できるライブラリを探してみた。 swaggo/swag swaggo/swagを使えばできそうだったので試してみた。 インストール go install github.com/swaggo/swag/cmd/swag@latest アノテーションを作成する main.goにアノテーションを追加する。 // @title sample api // @version 1.0 // @description this is sample apigw // @host localhost:18080 // @BasePath /api/v1 // @tag.name accounts // @tag.description about accounts request func main() { handlers.HandleRequests() } 記入後にswag initを実行する。 . ├── docs.go ├── swagger.json └── swagger.yaml すると上記ファイルたちが生成される。 UIで確認する これがいまいちわかなかったので、https://editor.swagger.io/に生成されたyamlファイルをコピペして見る方法にしているけど、localhost:18080/api/v1で見られるんだと思われる。 …見れないので、要調査。 ⚠️ 違った。 localhost:18080/api/v1 上のURLはBaseURLだった。 まあ、問題ないので、いったん上記方法で行く。 追記:2023.12.30 Swagger ViewerVSCodeの拡張機能があった。 個別APIのアノテーションを作成する // GetAccount // @summary アカウントの情報を返します // @description user_idを元にアカウント情報を返します // @tags accounts // @produce json // @success 200 // @failure 401 // @router /accounts [get] func FetchUserById(w http....

投稿日 · 2023-12-28 · 更新日 · 2024-06-07 · 1 分 · nove-b

NestJSでOpenAPIツール「swagger」を生成する

依存関係をインストールする npm install --save @nestjs/swagger main.tsを編集する async function bootstrap() { const app = await NestFactory.create(AppModule); // Swaggerの記述 const config = new DocumentBuilder() .setTitle('Cats example') .setDescription('The cats API description') .setVersion('1.0') .addTag('cats') .build(); const document = SwaggerModule.createDocument(app, config); SwaggerModule.setup('api', app, document); await app.listen(3000); } bootstrap(); 後は上の記述を編集し、http://localhost:3000/api/を開けば作成されている。 非常に楽なので活用していきたい。 APIをグルーピングする これだとcatsというタグができるがその中は空になり、すべてがdefaultにグルーピングされる。 任意のグルーピングを作りたい時は、hoge.controller.tsを下記のように変更する。 import { Controller } from '@nestjs/common'; import { ApiTags } from '@nestjs/swagger'; @Controller('hoge') @ApiTags('hoge') export class HogeController { constructor(private readonly sService: HogeService) {} これで意図した形になる。

投稿日 · 2023-04-23 · 更新日 · 2024-06-07 · 1 分 · nove-b