ミルク蒼屋のチラシ

Colloid(コロイド)が何か色々と残したりするブログです

dotnetコマンドだけでAPIモックサーバーが作れる「Mockaco」

あー…

楽してAPIの固定値だけ返せるAPIのモックサーバーを立てたいなー…しかしjsとか入れるのだるいな…*1 .NETでうまくできないかな…
そんな時に調査したときに見かけました。

github.com

Mockacoって奴を。

ということで縁あって触ってみたら、思いの外ローカロリーで構築できたのでせっかくなので紹介。
やってることはReadmeに書かれている事ですのであしからず。

Mockacoとは

当ブログ記事のタイトル通り
dotnetコマンドだけでAPIモックサーバーが作れる奴なのである!

試した弊環境

API Mockサーバーを建てるぞ

dotnet toolコマンドでMockacoを入れる。

dotnet tool install -g mockaco  

無事に入ると無事にインストできたよと出力される。やさしいね。
f:id:Colloid:20211222220457p:plain

とりあえず起動する

Mockaco用にディレクトリを作成して、以下のコマンドでサーバーを起動する。コマンドからわかるlocalhost:5000で起動される感。

dir>mockaco --urls "http://localhost:5000"  

おさるさんの出力がされればほぼサーバー起動が成功したと言っても過言ではない。
f:id:Colloid:20211222220900p:plain ちなみにこれ用にディレクトリを作成する理由として、Log用のフォルダが勝手に作られる。なので誤って適当にMyDocument直下とかやると謎のLogフォルダができるので、新規フォルダで作ると良いと思う。 f:id:Colloid:20211222221215p:plain

固定で返したいJSONを定義する

Mocks フォルダを先程出来たLogディレクトリと同じ階層に作る。そしてその中にJSONファイル(ファイル名と中身は下記参照)を作る。
f:id:Colloid:20211222221908p:plain

Mocks\PingPong.json

{
    "request": {
      "method": "GET",
      "route": "ping"
    },
    "response": {
      "status": "OK",
      "body": {
        "response": "pong"
      }
    }
  }

保存を忘れずに。私は保存をうっかり忘れててエラーを起こしました。

APIを投げる

GET http://localhost:5000/pingを投げると画像のようにpongしかないJSONレスポンスが返ってくる。 f:id:Colloid:20211222222844p:plain
サーバーは起動しっぱなし!なので再起動なし!
コードのコの字を書かずにAPIモックサーバーが出来た!
ね、簡単でしょう?

XMLのレスポンスを返したい

諸々の事情でXMLのレスポンスがいい!とあればこんなJSONを定義すれば良い。

{
    "request": {
      "method": "GET",
      "route": "message"
    },
    "response": {
      "status": "OK",
      "headers": {
        "Content-Type": "application/xml"
      },
      "body": "<?xml version=\"1.0\" encoding=\"UTF-8\" ?><memo>koreha xml dayo</memo>"
    }
  }

bodyにXMLを定義する。諸々エスケープする必要があるので注意。
GET http://localhost:5000/messageを投げると画像のようなしょーもないXMLが返ってくる。

f:id:Colloid:20211222223755p:plain

こんな感じで、GET以外にも他のメソッドも使えるし、JSONの中にC#スクリプト書いて値変化させる等ができるっぽいので中々手軽で便利だと思う。

github.com

JSONのキー名でなんの設定かわかるので、あんまり深く考えずにサクッと定義できそうで良い。実サービス構築するのだるい時とかに、リクエスト&レスポンスさえわかればさくっと構築できるので、わりと使えそうと思います。

最後に

GithubのReadmeに書かれている物を真似ればいいだけなのですが、日本語の資料もなさそうだし、ということで布教する感覚で書きました。
APIモックサーバーは色々ありますが、.NET環境縛りならこれでも良いと思います。選択肢の一つになれれば幸いです。
現場からは以上です。

*1:dockerは会社利用だと気楽に試せなくなったなと思うんだ