こんにちは。CData Software Japanリードエンジニアの杉本です。
今年は今まで以上に iPaaSやローコード・ノーコードサービスが盛り上がった一年でしたね!
それに伴い、SaaS・PaaSなどの各種APIを使って連携を実現するシチュエーションも増えてきました。
そんなAPI連携を作り込む際、うまくAPIリクエストが組み立てられなかったり・検証できなかったり、連携アプリから適切にAPIリクエストができているかわからない、となると原因の切り分けポイントが多くて困りますよね。
というわけで今回はAPI連携コンポーネントベンダーのエンジニアである私が普段活用している「APIの検証を便利にするツールやサービス」を紹介したいと思います!
(ちなみに、API連携開発用なので、APIを開発する時とは別な観点です。ご注意を。)
- Postman
- Postman Echo
- Postman API Network
- Fiddler
- SwaggerHub
- Webhook.site
- mockable.io
- URLエンコード・デコードフォーム
- オンラインBase64のエンコーダ
- おわりに
Postman
Postman はAPIの検証にもAPI開発にも必須なツールです。
認証・クエリパラメータ・Headerの設定などをUIでわかりやすく実施できるのはもちろん、Postman Collectionという形で各リクエストをまとめて管理したり、チームでシェアすることも可能です。
また、作成したリクエストから、各プログラミング言語のリクエストサンプルを生成できます。2020/12/08日時点で、27種類提供されていました。
作成したPostman CollectionはPowerAppsやPowerAutomateのようなノーコードツールに取り込んで、利用することも可能です。
Postman Echo
Postmanの影に隠れている感じですが、Postman EchoというAPIリクエストを検証するためのサービスも存在します。
例えば、以下のようなリクエストを渡すと
curl --location --request GET 'https://postman-echo.com/get?foo1=bar1&foo2=bar2'
下記のようなレスポンスを得ることができるようになっています。開発したAPI連携が適切にリクエストを渡せているか確認するために利用することができますね。
{ "args": { "foo1": "bar1", "foo2": "bar2" }, "headers": { "x-forwarded-proto": "https", "host": "postman-echo.com", "accept": "*/*", "accept-encoding": "gzip, deflate", "cache-control": "no-cache", "postman-token": "5c27cd7d-6b16-4e5a-a0ef-191c9a3a275f", "user-agent": "PostmanRuntime/7.6.1", "x-forwarded-port": "443" }, "url": "https://postman-echo.com/get?foo1=bar1&foo2=bar2" }
Postman API Network
Postman のリクエストは自分で作り込むだけでなく、API Networkというサイトで公開されているものを利用することもできます。
対象のAPIを選択して、「Run in Postman」をクリックすれば、そのまま使用しているPostmanにAPIリクエストを取り込むことができます。
ちなみにPostmanはAPI ReferenceがOpenAPIなどで公開されていれば、そこからリクエストを生成することも可能です。
会計freeeなどのAPIドキュメントがOpenAPIで公開されていたりするので、知っていると一気にAPI検証が楽になります。
Fiddler
作成したアプリケーションがどのようなHTTP・Web APIのリクエストを行っているのか、トラッキングするのであれば、Fiddlerが便利です。
特にスマホアプリやローカルデバッグで真価を発揮するのが、Fiddlerではないでしょうか。
私の会社、CData Software Japanでもバリバリ使っているツールで、プロキシとしてFiddlerのポート番号を指定すれば、APIリクエスト・レスポンスがわかりやすく表示できます。
特にツール・アプリケーションと連携したあとに問題が発生した際、アプリケーション側の問題なのか、API側の問題なのかを見極めることは重要です。
また、ブレイクポイントのように、実行されたAPIリクエストをFiddlerでトラックし、内容を書き換える、といったことも可能です。
これで一回APIリクエストを書き換えて、正常に疎通できるか確認する、といったことをよくやります。
(正直なところ、Fiddlerは常に使用するので、私の環境ではスタートアップで起動する状態です)
SwaggerHub
どちらかと言えば、連携というよりはAPI開発・OpenAPI Editor のイメージが強いSwaggerHubですが、Open API(Swagger)の定義を取り込んでClient用SDKを生成することにも利用できます。
例えば電子契約サービス Cloud SignのAPIはSwaggerHubで公開されており、「Export」ボタンから、各種言語用のSDKを生成、取得できます。もちろん、自身でほかから取得したOpenAPIを設定して、SDKを生成することも可能です。
慣れている人は、Open API Generatorを使うのもありですね。
Webhook.site
WebhookやiPaaSなどの場合、連携したアプリに適切にAPIリクエストが行われているか、どのようなレスポンスを受け取るのか確認しづらい場合がありますよね。
その場合に、この「Webhook.site」を使うのがおすすめです。
生成されたURLに対してAPIリクエストを行うと、リクエストされた内容をいかのように簡単に確認することができます。
ちなみにリクエストはPOSTだけでなく、GETでもPUTでもDELETEでもかまいません。
Sendgridさんなども愛用しているみたいです。Event Webhookを検証する時は必須ですね。
mockable.io
とりあえず、認証はいいから、JSONだけ返してくれるAPIにしてほしい。みたいなことってないですか?
そんな時はMock APIを簡単に構成してくれるサービスが便利です。
以下のような感じでAPI定義を作っておけば、簡単にAPIリクエストとレスポンスを検証できます。
API仕様書しか無いけど、とりあえず連携検証を行いたい時とかに使えます。
URLエンコード・デコードフォーム
APIリクエスト・クエリパラメータを作り込む時、URLエンコードとかを調整するのが面倒ですよね。あとエラーメッセージがURLエンコードされた文字列だったりするとツライです。
そんな時にはURLエンコード・デコードフォームが使えます。
オンラインBase64のエンコーダ
これもオンライン上のエンコーダ・デコードがあります。
ちなみに個人的に地味に利用するのが、画像やファイルのエンコードです。ファイルアップロード検証を行うために、Base64文字列を作って試す、みたいなことがあるのですが、そんな時に画像ファイルからBase64エンコードしてくれるサービスがあるので、便利です。
おわりに
以上です!
もし皆さんのおすすめのツールがあれば、是非教えて下さい!
また、ここまで色んなサービスを紹介してきましたが、オンラインサービスに機密情報などは渡さないように注意しましょう。