HTTP APIのテストツールDreddがSwaggerに対応していたので試してみた

LINEで送る
Pocket

以前に

APIドキュメントでAPIサーバをテストする | WEB EGG

という記事を書いたときに紹介したDreddですが、
いつのまにか自社サービスのApiaryだけでなくSwagger(OpenAPI v2)にも対応していたそうです。

ついでにロゴも洗練されてかっこよくなってます。

自分で書いた過去記事の末尾でも軽く触れていますが、
OpenAPI initiativeも未だ活動続いてますし、「乗るしか無い、このビッグウェーブに」といったところなんでしょうか。
なんにせよApiaryにロックインすることなく、Swaggerで記述した仕様書がテストできるようになったというのは嬉しいことなので早速試してみました。

Dreddをインストール

READMEのとおりです。

Swaggerのデモ仕様書を作成

まずはミニマムで試してみたいので、ドキュメントにあるやつをそのままパクります。

ちなみにOpenAPI v3(OpenAPI.nextブランチ)には対応してないのか調べてみたのですが、してないようでした。
まぁまだスキーマ定義もサンプル仕様も存在しないし仕方ないと思います。

デモアプリ作成

同じくドキュメントからパクります。

ごく簡単なechoサーバです。

いざDredd実行

ドキュメント

はい、いい感じです。さすがDredd。

AWS API GatewayのデモAPIを使ってみる

もうちょい実用向けのサンプルも欲しいところです。
Swaggerといえば、AWS API Gatewayでしょう。
API GatewayはデフォルトでSwaggerのPetstoreというサンプル仕様書を作成してくれます。
ということで、これもテストしてみます。

  1. AWSのコンソールでAPI Gatewayを有効化
  2. Petstore APIがデフォルトで入力されてるのでそのままインポート
  3. 作ったAPIをデプロイ
  4. Swaggerの仕様書をエクスポート

でAPIのエンドポイントとswaggerの仕様書を入手して、試してみます。
エクスポートした仕様書はYAML形式でswagger.ymlというファイル名で保存しました。

{XXXXXXXXXXX}, {STAGE}は自分で入力した内容になります。

あら。エラーになってしまいました。
PetStoreの仕様書自体に問題があるようです。

これを治すのは本筋じゃない感じがしたので、一旦ここまでで止めておきます。
API GatewayとLambdaをベースにしたサーバレスなAPIサーバとかも、簡単に受け入れテストできるようになるので、便利だと思います。
DreddがApiary(API Blueprint)ではなくSwaggerに対応したことは大きな意味を持つと思います。

尻切れトンボですみません。

LINEで送る
Pocket