2
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

BunAdvent Calendar 2023

Day 13

【Bun】ElysiaでSwagger エンドポイントを生成してみる

Last updated at Posted at 2023-12-01

Elysia には Swaggerプラグインがあります。Swagger は、APIを設計・ドキュメント化するためのツールですが、Elysia なら簡単に実装できます。

昔は、API を作った上にその使い方をもくもくと泣きながらドキュメントに仕上げたものですが、今は Swagger 一発で書けるうえに、万が一(?) API の仕様などが変わっても簡単に書き換えられるわけです。有難いです。

で、Swaggerプラグインのサイトはここです。

では、ここの最初のサンプルを試してみましょう。

Swaggerインストール
$ bun add @elysiajs/swagger
Swagger用スクリプト swgr-1.js
import { Elysia } from 'elysia'
import { swagger } from '@elysiajs/swagger'

new Elysia()
    .use(swagger())
    .get('/', () => 'hi')
    .post('/hello', () => 'world')
    .listen(9001)
実行します
$ bun swgr-1.js

この状態で ブラウザから 今回作った

http://<アドレス>:9001/swagger

へアクセスするとお馴染みのSwagger の画面が現れます。

image.png

これだけです。簡単。

「Try it out」ボタンでAPIに get したり post して動作確認し、そのサーバーへ Request と Response の結果を見ることもできます。

では実際に、タグ名を「myApp」としたサンプルを置いておきますね。

サンプル( http://74.226.208.203:9001/swagger )

image.png

各 GET/POSTを開いて、「Try it out」と「Execute」ボタンを押してみると、APIへ その Curl が発行されて Response body と Response headers などを確認できます。

コードはこれだけ。

Swagger用スクリプト swgr-1.js
import { Elysia } from 'elysia'
import { swagger } from '@elysiajs/swagger'

new Elysia()
    .use(swagger())
    .get('/', () => 'Hello Elysia', {
       detail: {
         tags: ['myApp']
       }
    })
    .post('/hello', () => 'world')
    .listen(9001)
実行します
$ bun swgr-1.js

まぁ詳細は Elysia>Swagger Plugin のサイトや

Swagger のページをご覧ください。

最近 Qiita に書いた Bun 関連の記事

2
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?