Kong Insomniaを使用してAPIのテストを行ってみた
APIのテストを効率化したい えがわ です。
今回は Kong Insomnia を使用してAPIのデバッグ、テストを行っていきます。
Kong Insomniaとは?
Kong Insomniaは、Kong社が提供するオープンソースのAPIクライアントツールです。
REST、GraphQL、gRPC、WebSocketなど、様々なプロトコルに対応したAPIのテストや開発が可能です。
直感的なGUIインターフェースを備え、APIリクエストの作成、テスト、デバッグが簡単に行えます。
環境変数の管理やレスポンスの検証、自動テストの作成など、開発者向けの豊富な機能を提供しています。
テストするAPI
今回は超簡単にタスク管理APIを作成し、Kong Insomniaでテストを行っていきます。
今回テストするAPIはこちら
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はこちらからダウンロードすることができます。
インストールの手順は割愛します。
プロジェクトを作成
+
ボタンを押下してプロジェクトを作成していきます。
ローカルに保存するためLocal Vault
を選択します。
作成されました。
ドキュメントを作成
New Document
を選択しファイル名を入力します。
ドキュメントが作成されました
specファイルを読み込み
Insomniaで管理を行うため、Spec
ファイルを作成します。
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で読み込みます。
不足している項目があるので、波線が表示されていますが、プレビューでは問題なさそうです。
コレクションの作成
テストを行うためにコレクションを作成します。
SPECの右側にある歯車からGenerate collection
を選択することで自動的に作成されます。
コレクションが作成されました。
specファイルから自動的に読み取り、簡単にリクエストを送れるようになっています。
環境の設定
リクエストを送信するURLの設定を行います。
Base Environment
の
Collection Environments
の右にある編集アイコンをクリックして現在の設定を確認します。
base_urlは以下の設定になっており、Scheme、HOST、base_pathを変数として設定することができます。
自動的に作成されているOpenAPI env localhost:3000
を確認すると、自動的にローカルで確認するための設定が追加されています。
リクエストを送るときはOpenAPI env localhost:3000
を選択することで、ローカル環境を指定することが可能です。
環境変数は複数作成することができるため、ステージング環境やQA環境など、さまざまな環境が追加になった場合は、こちらの設定も追加するだけで簡単に切り替えることが可能です。
リクエストを実行
設定が完了したので、リクエストを実行してみます。
「新しいTodoを作成」を選択、リクエストボディを設定し送信します。
ステータスコードも問題なさそうです。
TODOの作成を行ったので、作成したTODOを取得してみます。
「すべてのTodoを取得」を選択し送信します。
作成したタスクを取得できました。
テストを実行
最後にテストを実行してみます。
TESTSタブ -> + New test suite -> + New test
でテストケースを作成します。
Returns 200
を認識しやすい名前に変更し、Select a request
からすべてのTodoを取得
を選択します。
▶
ボタンを押下することでテストを実行することができます。
同じようにPOSTも追加します。
POSTはスタータスコード: 201を返すため、このままでは失敗となります。
コードを表示し、201を指定します。
設定をエクスポート
上記の設定はエクスポートすることも可能です。
これにより、バックアップやメンバーへの共有が可能となっています。
さいごに
Kong Insomniaを使用してAPIのテスト、デバッグを行ってみました。
OpenAPI Specファイルは自分で作成する必要はありますが、サンプルもあるので簡単に作成することが可能です。
コレクションの自動作成や、テストも簡単に行えるため、APIクライアントとしてKong Insomniaをぜひ使ってみてください。
この記事がどなたかの参考になれば幸いです。