共有できるスタブAPIツールを公開してみた
個人開発でco-metubというスタブAPIを共有できるGUIツールを作りました。
バックエンドとフロントエンドのチームで、スタブAPIを良い感じに共有したい時にお使いください。
使い方
インストール方法
Dockerが入った環境であれば、下記コマンドを実行するだけです。
空いてるサーバをスタブAPIサーバにしてしまいましょう。
# 公開したいポートを決めます。
HOST_PORT=8080
# httpで公開するなら、セキュア属性クッキーの無効化をtrueに設定します。
DISABLE_SECURE_COOKIES=false
# あとは、Dockerコマンドを叩くだけです。(SESSION_SECRET_KEYには、任意の値を入れてね)
docker run --init -e SESSION_SECRET_KEY="your random string of at least 32 bytes" \
-e DISABLE_SECURE_COOKIES=$DISABLE_SECURE_COOKIES \
-d -p $HOST_PORT:3000 -v $(pwd)/data:/data ghcr.io/solaoi/co-metub:latest
操作方法
プロジェクトの作成
まずは、スタブAPIを管理するためのプロジェクトを作ります。
プロジェクト一覧を開いて、『ADD』ボタンからプロジェクトを追加します。
プロジェクト名(Name)はお好きに、
BasePathはそのプロジェクトが管理する第一階層のパスとなります。
例えば、http://localhost/foo/bar
でスタブAPIを公開したい場合は
/foo
をBasePathに入力してください。
(※BasePathの末尾にスラッシュは不要です。)
スタブAPIの作成
作成したプロジェクト配下でスタブAPIを作ります。
Stubs右の『ADD』ボタンから、スタブAPIを追加します。
スタブAPI作成ページが開けましたら、各項目を入力していきます。
Pathは第2階層以降を入力します。
例えば、http://localhost/foo/bar/baz
でスタブAPIを公開したい場合は
プロジェクトのBasePathに/foo
を、スタブのPathに/bar/baz
を入力してください。
(※Pathの末尾にスラッシュは不要です。)
Methodでは、受け付けるリクエストの種類を選択してください。
またContentType, StatusCode, Responseには、返却するレスポンスの内容を入力してください。
(※Sleep(seconds)は、0以上の秒数を入力するとAPIのタイムアウト時の挙動を確認できます。)
スタブAPIの利用
スタブAPIの作成が完了すると、プロジェクトのStubs欄に追加したスタブが表示されるようになります。
『COPY-URL』項目にあるボタンから、スタブAPIのURLをコピーして利用していきましょう!
(※今回であれば、http://localhost:8080/api/foo/bar/baz
がコピーされます。)
また、スタブAPIの詳細ページからも『COPY URL』ボタンから
スタブAPIのURLをコピーして利用できます。(内容は全く同じです。)
加えて、このスタブAPIの詳細ページではリクエストされた内容についても確認できます。
(直近3件のクエリ、BODY、ヘッダが確認できます。)
使った技術
アプリケーション
今回はサクッと作りたかったので、
React界のRuby on Railsと噂のBlitz.jsを利用しました。
お作法に戸惑いましたが、scaffoldでポンポン出来上がってくのは楽しいですね。
またお手軽に使えるを基準に考え、ファイルベースのSQLiteという選択をしました。
Dockerコマンドを実行したディレクトリに永続化用の/data
がいるので、
よしなにバックアップくださいませ。
- Blitz.js
- React
- Next.js
- Prisma
- TypeScript
- Chakra UI
- SQLite
CI/CD
GitHubのProプランに何故か加入しているので、活用すべくパイプラインを組みました。
- GitHub Actions
- 【定期実行】npm-check-updatesでライブラリの更新があれば、PRを自動作成
- 【リリース時】GitHub Packages Container registryにイメージをアップロード
- 【PRやマージ時】CodeQL(脆弱性やコードの品質の可視化)実行
- GitHub Packages Container registry
まとめ
モノづくりは、やっぱり楽しいですね!
実現したいヴィジョンから、実際に形にまでできるプログラミングって最高だと思います。
とはいえ、目的に応じて必要なこと、諦めることを時としてエンジニアは選択しなければなりません。
というわけでco-metubは、ユーザーの登録機能がある一方、削除はできません。
(プロジェクトが終わればスタブAPIですし、パッと全部消すでしょう。)
またフィードバックなどありましたら、気軽にこの記事でコメントやGitHubでissue立てちゃってください><
Discussion