Swagger InspectorはAPIテスティングツールです。

APIエコノミーの世界では、APIの組み合わせでシステムを構築するため、APIの妥当性をテストする機会が増えます。curlなどのコマンドを用いてHTTPリクエストを生成しても良いのですが、APIテストのパターンは多岐に渡り、REST、SOAP、GraphQLなどさまざまなインタフェースに応じたテストが必要となります。

そんな中、簡単にAPIテストができ、かつSwaggerとの親和性の高いツールとして「Swagger Inspector」が注目されています。

今回はSwagger Inspectorを使ってどういったAPI呼び出しができ、またその他のツールとどう連携すればよいか解説します。

Swaggerツール群の関係性(第一回の再掲)

<Swaggerの基本はこちらで!>

【連載】Swagger入門

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呼び出しを実施する際に役立ちます。

Swagger InspectorによるAPI呼び出し

API呼出履歴を使ったAPI作成とSwaggerHubへのインポート

API呼出履歴を使ってSwaggerHubにAPIをインポートすることができます。

先ほどの画面にて、[History]欄の任意のリクエストにチェックを入れ、[CREATE API DEFINITION]をクリックします。今回はSwaggerHubに定義されたAPIの情報のインポートとなりますが、実際のユースケースとしては、Swagger外部で定義したAPIをインポートするやり方になるでしょう。

HistoryからAPI定義の生成

[Success!]と表示されたら成功です。[GO TO SWAGGERHUB]をクリックし、SwaggerHub画面へ遷移しましょう。

SwaggerHubへの連携

SwaggerHubにログインすると、[Import OpenAPI From Inspector]ポップアップ画面が表示されます。[Name]に任意の値を設定し、[IMPORT OPENAPI]をクリックします。

API名・バージョン・可視性の設定

実行したAPIのインポートが完了しました。

作成した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
}

GraphiQLを使ったGraphQLアクセス

*  *  *

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児のパパ。