Swagger InspectorはAPIテスティングツールです。
APIエコノミーの世界では、APIの組み合わせでシステムを構築するため、APIの妥当性をテストする機会が増えます。curlなどのコマンドを用いてHTTPリクエストを生成しても良いのですが、APIテストのパターンは多岐に渡り、REST、SOAP、GraphQLなどさまざまなインタフェースに応じたテストが必要となります。
そんな中、簡単にAPIテストができ、かつSwaggerとの親和性の高いツールとして「Swagger Inspector」が注目されています。
今回はSwagger Inspectorを使ってどういったAPI呼び出しができ、またその他のツールとどう連携すればよいか解説します。
Swagger Inspectorを使ったAPI呼び出し
早速、Swagger Inspectorを使ってみましょう。
Swagger Inspectorは、WebブラウザからSwagger Inspectorのサイトにアクセスするだけで即座に利用可能です。インストール作業は特別必要ありません。
前回作成したAPIを呼び出してみましょう。
「https://virtserver.swaggerhub.com/xxxxx/sample/1.0.0/inventoy/」(xxxxxはユーザID)を指定し、[SEND]をクリックします。[Response]欄に[Status]が[200]でJSON形式のデータが返却されていることがわかります。
[History]欄を見ると、過去にアクセスしたAPI呼び出し処理の履歴を確認することができ、繰り返しさまざまなAPI呼び出しを実施する際に役立ちます。
API呼出履歴を使ったAPI作成とSwaggerHubへのインポート
API呼出履歴を使ってSwaggerHubにAPIをインポートすることができます。
先ほどの画面にて、[History]欄の任意のリクエストにチェックを入れ、[CREATE API DEFINITION]をクリックします。今回はSwaggerHubに定義されたAPIの情報のインポートとなりますが、実際のユースケースとしては、Swagger外部で定義したAPIをインポートするやり方になるでしょう。
[Success!]と表示されたら成功です。[GO TO SWAGGERHUB]をクリックし、SwaggerHub画面へ遷移しましょう。
SwaggerHubにログインすると、[Import OpenAPI From Inspector]ポップアップ画面が表示されます。[Name]に任意の値を設定し、[IMPORT OPENAPI]をクリックします。
実行したAPIのインポートが完了しました。
Swagger Inspectorで指定可能なAPI呼出パターン
ある程度Swagger Inspectorの使い方を理解いただいたところで、もう少し突っ込んで使い方を解説していきます。
Swagger Inspectorが対応するHTTPメソッドのパターンは以下の通りです。
- GET
- POST
- PUT
- DELETE
- PATCH
- HEAD
- OPTIONS
また、リクエストパラメータ、認証パターン、Content-Typeなどのリクエストヘッダといった形で、さまざまな指定が可能です。
GraphiQLでのAPIアクセス
これまでREST APIによるAPIアクセスでは、REST GETやPOSTなどにより、比較的単純なクエリの発行にとどまっており、場合によっては複数のAPIを発行し、結果をコンシューマ側にて集計するなどの作業が必要でした。
GraphQLはAPIアクセスのためのクエリ言語で、SQLのように複雑な条件を指定できます。一度のAPIアクセスでさまざまな情報を取得できます。
今回は、「GraphiQL」※1と呼ばれるGraphQLクライアントを使ってGraphQLを体感してみましょう。
前提環境として、brewを使って、必要なNode.jsをインストールします※2。
※1 GraphQLとスペルが似ているので注意。QLの前にiがあります。
※2 筆者の環境には既にインストール済みでしたので、brew installではなく、brew upgradeの例を示しています。
$brew upgrade node
==> Upgrading 1 outdated package, with result:
node 8.3.0 -> 10.10.0
==> Upgrading node
==> Installing dependencies for node: icu4c
~中略~
==> node
Bash completion has been installed to:
/usr/local/etc/bash_completion.d
npmを使ってgraphql、express、express-graphqlをインストールします。
$npm init
This utility will walk you through creating a package.json file.
It only covers the most common items, and tries to guess sensible defaults.
Is this ok? (yes)
$npm install graphql express express-graphql -save
npm notice created a lockfile as package-lock.json. You should commit this file.
npm WARN express-graphql@0.6.12 requires a peer of graphql@^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 but none is installed. You must install peer dependencies yourself.
npm WARN server@1.0.0 No description
npm WARN server@1.0.0 No repository field.
+ express-graphql@0.6.12
+ graphql@14.0.2
+ express@4.16.3
added 53 packages in 96.144s
Node.js用のプログラムを作成・起動します。
$vi server2.js
~内容は以下URLのserver2.jsを参照~
~「https://dev.classmethod.jp/server-side/node-js-server-side/graphql-tutorial-nodejsexpress/」~
$node server2.js
Express GraphQL Server Now Running On localhost:4000/graphql
ブラウザから「http://localhost:4000/graphql/」にアクセスするとGraphiQLの画面にアクセスできます。以下を入力し実行します。
query getSingleCourse($courseID: Int!) {
course(id: $courseID) {
title
author
description
topic
url
}
}
{
"courseID":1
}
* * *
Swagger InspectorやGraphiQLを使ったAPIアクセス方法について解説しました。今後APIの多様化が進むとRESTやGraphQLなどのさまざまな方式が登場し、こういったAPIを実行するAPIクライアントの重要性が増してくることが考えられます。ぜひ、お手元でSwagger Inspectorをお試しください。
これまで、Swaggerの連載ということもありSmartBear社のSwagger関連ツールを紹介して来ましたが、次回は本家Open API Initiativeのサイトにて登録されているツールを紹介します。
著者紹介
![]() |
正野 勇嗣 (SHONO Yuji ) - NTTデータ 課長
2011年まで開発自動化技術のR&Dに従事。その後、開発プロジェクト支援やトラブルシューティング等に主戦場を移す。「ソースコード自動生成」に加えて、JenkinsやMaven等の「ビルド自動化」、JsTestDriverやSelenium等の「テスト自動化」を扱うようになり、多様化する開発自動化技術動向に興味。
最近は第四の自動化であるInfrastructure as Code等の「基盤自動化」の魅力に惹かれている。開発自動化技術に関する雑誌・記事執筆も行う。2児のパパ。