プリズム

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仕様をダウンロードします。

An example of the Download OpenAPI Specification section

一度 .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 "."