Kong Insomniaを使用してAPIのテストを行ってみた

Kong Insomniaを使用してAPIのテストを行ってみた

Clock Icon2024.11.15

APIのテストを効率化したい えがわ です。

今回は Kong Insomnia を使用してAPIのデバッグ、テストを行っていきます。

Kong Insomniaとは?

Kong Insomniaは、Kong社が提供するオープンソースのAPIクライアントツールです。
REST、GraphQL、gRPC、WebSocketなど、様々なプロトコルに対応したAPIのテストや開発が可能です。
直感的なGUIインターフェースを備え、APIリクエストの作成、テスト、デバッグが簡単に行えます。
環境変数の管理やレスポンスの検証、自動テストの作成など、開発者向けの豊富な機能を提供しています。

テストするAPI

今回は超簡単にタスク管理APIを作成し、Kong Insomniaでテストを行っていきます。

今回テストするAPIはこちら

index.ts
import express, { Request, Response } from 'express';

const app = express();
const port = 3000;

app.use(express.json());

class Todo {
  constructor(public readonly title: string, public readonly content: string, public readonly check: boolean = false) { }
}

let todos: Todo[] = [];

app.get('/post', (req: Request, res: Response) => {
  res.send({ "todos": todos });
});

app.post('/post', (req: Request, res: Response) => {
  var { title, content } = req.body;
  const todo = new Todo(title, content);
  todos.push(todo);
  res.status(201).send({ "todo": todo });
});

app.listen(port, () => {
  console.log(`Server running at port:${port}/`);
});

POSTでタスクをメモリ内に保存し、GETで全てを取得する、超絶直観的なAPIです。

やってみる

Insomniaはこちらからダウンロードすることができます。
インストールの手順は割愛します。

プロジェクトを作成

ボタンを押下してプロジェクトを作成していきます。

kong_insomnia_demo_01.png

ローカルに保存するためLocal Vaultを選択します。

kong_insomnia_demo_025.png

作成されました。
kong_insomnia_demo_02.png

ドキュメントを作成

New Documentを選択しファイル名を入力します。
kong_insomnia_demo_03.png

ドキュメントが作成されました
kong_insomnia_demo_04.png

specファイルを読み込み

Insomniaで管理を行うため、Specファイルを作成します。

todo_spec.yaml
openapi: 3.0.0
info:
  title: Todo API
  description: Todo APIアプリケーション
  version: 1.0.0

servers:
  - url: http://localhost:3000
    description: 開発サーバー

paths:
  /post:
    get:
      summary: すべてのTodoを取得
      description: 登録されているすべてのTodoアイテムのリストを返します
      responses:
        '200':
          description: 正常にTodoリストを取得
          content:
            application/json:
              schema:
                type: object
                properties:
                  todos:
                    type: array
                    items:
                      $ref: '#/components/schemas/Todo'

    post:
      summary: 新しいTodoを作成
      description: 新しいTodoアイテムを作成し、データベースに追加します
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
                - title
                - content
              properties:
                title:
                  type: string
                  description: Todoのタイトル
                content:
                  type: string
                  description: Todoの内容
      responses:
        '201':
          description: Todoの作成に成功
          content:
            application/json:
              schema:
                type: object
                properties:
                  todo:
                    $ref: '#/components/schemas/Todo'

components:
  schemas:
    Todo:
      type: object
      properties:
        title:
          type: string
          description: Todoのタイトル
        content:
          type: string
          description: Todoの内容
        check:
          type: boolean
          description: Todoの完了状態
          default: false
      required:
        - title
        - content

作成したspecをInsomniaで読み込みます。
不足している項目があるので、波線が表示されていますが、プレビューでは問題なさそうです。
kong_insomnia_demo_06.png

コレクションの作成

テストを行うためにコレクションを作成します。
SPECの右側にある歯車からGenerate collectionを選択することで自動的に作成されます。

kong_insomnia_demo_07.png

コレクションが作成されました。
specファイルから自動的に読み取り、簡単にリクエストを送れるようになっています。
kong_insomnia_demo_026.png

環境の設定

リクエストを送信するURLの設定を行います。

Base Environment
Collection Environmentsの右にある編集アイコンをクリックして現在の設定を確認します。

base_urlは以下の設定になっており、Scheme、HOST、base_pathを変数として設定することができます。
kong_insomnia_demo_08.png

自動的に作成されているOpenAPI env localhost:3000を確認すると、自動的にローカルで確認するための設定が追加されています。
kong_insomnia_demo_09.png

リクエストを送るときはOpenAPI env localhost:3000を選択することで、ローカル環境を指定することが可能です。
kong_insomnia_demo_12.png
環境変数は複数作成することができるため、ステージング環境やQA環境など、さまざまな環境が追加になった場合は、こちらの設定も追加するだけで簡単に切り替えることが可能です。

リクエストを実行

設定が完了したので、リクエストを実行してみます。
「新しいTodoを作成」を選択、リクエストボディを設定し送信します。

kong_insomnia_demo_13.png
ステータスコードも問題なさそうです。

TODOの作成を行ったので、作成したTODOを取得してみます。
「すべてのTodoを取得」を選択し送信します。

kong_insomnia_demo_14.png
作成したタスクを取得できました。

テストを実行

最後にテストを実行してみます。
TESTSタブ -> + New test suite -> + New testでテストケースを作成します。

kong_insomnia_demo_16.png

Returns 200を認識しやすい名前に変更し、Select a requestからすべてのTodoを取得を選択します。
kong_insomnia_demo_17.png

ボタンを押下することでテストを実行することができます。
kong_insomnia_demo_18.png

同じようにPOSTも追加します。
POSTはスタータスコード: 201を返すため、このままでは失敗となります。
kong_insomnia_demo_20.png

コードを表示し、201を指定します。
kong_insomnia_demo_21.png

設定をエクスポート

上記の設定はエクスポートすることも可能です。
kong_insomnia_demo_027.png

これにより、バックアップやメンバーへの共有が可能となっています。

さいごに

Kong Insomniaを使用してAPIのテスト、デバッグを行ってみました。
OpenAPI Specファイルは自分で作成する必要はありますが、サンプルもあるので簡単に作成することが可能です。
コレクションの自動作成や、テストも簡単に行えるため、APIクライアントとしてKong Insomniaをぜひ使ってみてください。
この記事がどなたかの参考になれば幸いです。

Share this article

facebook logohatena logotwitter logo

© Classmethod, Inc. All rights reserved.