プリズム
APIで作業するのは素晴らしいことだが、時には開発作業を行うために実際のAPIで作業する必要がないこともある。開発ワークフローに組み込んでおくと便利なツールのひとつに プリズム より ストップライト.PrismはAPIを模したモックサーバーです。開発中にAPIコールをテストするためにローカルで実行することができます。
プリズムは オープンAPI スペックを公開していますので、VonageのどのAPIでもこの方法を使うことができます。
プリズムのインストール
Prismはnode.jsツールなので、ローカルにnode.jsがインストールされている必要があります。フル ドキュメントとインストール手順 があるが、クイックバージョンは npm install コマンドを使用している:
npm install -g @stoplight/prism-cli
を実行して、コマンドがインストールされ、動作していることを確認する。 prism --version ターミナルから。
OpenAPI仕様の取得
OpenAPIの仕様を確認するには、以下のリンクからそのAPIに移動してください。 ドキュメンテーション・ホームページ.左側のメニューからAPIリファレンスを選択し、YAMLダウンロードボタンを使用してAPI仕様をダウンロードします。

一度 .yml ファイルを作成すれば、Prismの準備は完了です。
Prismでモックサーバーを起動する
ターミナルから、次のようなコマンドでprismを起動する:
prism mock [api-spec.yml]
例えばNumber Insight APIの場合、私のコマンドとその出力は以下のようになる:
$ prism mock number-insight.yml
[12:13:06] › [CLI] … awaiting Starting Prism…
[12:13:06] › [CLI] ℹ info GET http://127.0.0.1:4010/basic/json?number=1%295-2%209%2B2&country=UV
[12:13:06] › [CLI] ℹ info GET http://127.0.0.1:4010/standard/xml?number=67-64%298427&country=OU&cnam=false
[12:13:06] › [CLI] ℹ info GET http://127.0.0.1:4010/advanced/async/json?callback=sunt%20deserunt%20dolore%20id&number=%2B1208&country=CM&cnam=false&ip=accusamus
[12:13:06] › [CLI] ℹ info GET http://127.0.0.1:4010/advanced/xml?number=-47&country=MU&cnam=false&ip=non
[12:13:06] › [CLI] ▶ start Prism is listening on http://127.0.0.1:4010
出力の最後の行は、Prismがどこで実行されているかを示している。
PrismへのAPIリクエスト
Prismの起動時の出力に表示されているURLをベースURLとして、お好きなHTTPクライアントを使用してサンプルのAPIを試してください。上記の例ではNumber Insight APIを使用しているので、次のようなcurlリクエストを行うことができます:
curl "http://localhost:4010/basic/json?api_key=abcd1234&api_secret=VerySecret1&number=44777000777"
Prismからの応答には、実際のAPIと同じフィールドといくつかの例値があり、テスト時に「本物」の理想的な代替となります。
Prismと連携してAPIリクエストを作成するさらに簡単な方法として、Prismに与えたのと同じOpenAPI仕様をPostmanにインポートして、既製のリクエスト集を使用してみてください。リクエストの {{baseUrl}} PostmanとPrismを使えば、Vonage APIの形状を料金なしで素早く調べることができます。
アプリケーションでPrismを使用する
当社のSDKはすべて、APIリクエストの送信先となるベースURLの変更をサポートしています。 README 各ライブラリの)他のエンドポイントをテストに使用できるようにする。
プリズムの高度な使い方
プリズムでの生活が一段落したら、次のステップに進むためのヒントをいくつか紹介しよう。
具体的な回答を求める
当社のAPIは、状況によってはエラー応答を返すことがあり、そのようなエラー状況を実プラットフォーム上で再現することは困難です。Prismを使用すると、可能性のあるすべての応答に対してアプリケーションをテストできます。
API仕様の一部には、エラー応答の詳細が記述されており、応答名を使用してPrismにその応答を返すように依頼できます。
例えば、Verify APIでは、API仕様のレスポンス例にこのような記述がある:
examples:
success:
summary: Request was started
value:
request_id: abcdef0123456789abcdef0123456789
status: "0"
throttled:
summary: Request limit exceeded
value:
status: "1"
error_text: Throttled
account-disabled:
summary: Account is barred
value:
status: "8"
error_text: The api_key you supplied is for an account that has been barred from submitting messages.
rejected:
summary: Rejected
value:
status: "15"
error_text: The destination number is not in a supported network
デフォルトでは、Prismは最初のレスポンスを返します。これは素晴らしいことで、APIが通常返すものの良い例です。
しかし、あなたのコードがこれらの他の可能性のある応答のいくつかを処理することをチェックすることは理想的ではありません。そこでPrismが大いに役立つ!を追加することで __example パラメータをリクエストに追加すると、Prismが返す例を選択できます。たとえば、Verify APIへのcurlリクエストで、"throttled "レスポンスを返すようにするには、次のようにします:
curl "http://localhost:4010/json?api_key=abcd1234&api_secret=VerySecret1&number=44777000777&brand=Test&__example=throttled"
このようにPrismを使用することで、APIが返すすべてのレスポンスでアプリケーションの動作をチェックできる。
JQによるより良いJSONハンドリング
ここに示したcurlの例のように、コマンドラインでJSONを扱っている場合は、次のツールを試してみてほしい。 jq を使うと、JSONの扱い方がレベルアップする。それ自体が優れたフォーマッターであり、レスポンスから特定のフィールドを抽出したり、他の方法でデータを処理したりすることもできる。
最も単純な形では、Prismを最初にテストしたときに使用したcurlの例から、よりきれいな出力を得るために使用する:
curl "http://localhost:4010/basic/json?api_key=abcd1234&api_secret=VerySecret1&number=44777000777" | jq "."