本記事の対象
- データベースからデータを取得してAPIで利用したい方
- APIのデータをデータベースに書き込んだり、更新したりしたい方
- データベースからスキーマを生成してAPIで利用したい方
APIとデータベース操作
特にWeb APIの開発中で、データベースを利用することは非常に一般的なことになりますね。例えば:
- APIを通じてデータの保存・取得・更新などの CRUD 機能を実現
- データの永続化のために外部のストレージが必要
- 大量のデータを扱う場合はRDBやNoSQLなどのデータベース製品を利用するのが一般
- トランザクション管理が必要な場合にデータベースの機能が必要
- データ構造が複雑な場合にRDBのスキーマ機能を活用
- 検索性能を高めるためにインデックスやクエリチューニングが必要
このように、APIアプリケーションといえども、永続化や検索性能を確保するためには外部データベースが欠かせません。API開発・運用において大きなコストがデータベースの適切な利用に割かれていると言えるでしょう。
ApidogでAPI開発中にデータベースに接続して操作可能
API開発中にデータベースに接続してCRUD操作を行うために、Apidogというツールを使うのが便利です。Apidogは、汎用されているMySQL、SQL Server(2014及びそれ以上のバージョン)、Oracle、PostgreSQL、MongoDB、Redisにも対応可能です。
本記事では、MySQLデータベースを例にして、APIとの連携を行なって作業の効率化を実現する方法を紹介します。
データベースからデータを取得してレスポンスを検証
ApidogでAPIをテストする際、前・後処理でデータベースの接続を設定します。データベースに接続すると、SQLコマンドをデータベースからデータを取得して、それを簡単にApidogの変数に設定することが可能です。そして、それをリクエストパラメータに設定したり、レスポンスデータの検証を行なったりすることができるようになります。
ステップ⒈どのようなデータを対象に、どのような操作を行うことを定義するために、SQLのコマンドを入力します。例えば:select * from users where id=2
というコマンドを入力して、usersというデータベースからid=2のユーザーのデータを取得できます。
ご案内:「コンソールに結果を表示する」をスイッチオンして「送信」ボタンをクリックすると、「コンソール」でデータベースから取得したデータを表示することができます。
ステップ⒉「変数に結果を抽出する」で、変数名やJSONPath式を入力することで、データベースから取得したデータをApidogの環境変数、グローバル変数とローカル変数として保存することができます。
ステップ⒊Apidogのアサーション機能を使うことで、取得のAPIレスポンスがデータベースのデータに一致しているかどうかを自動的にAssertすることもできるので、APIの動作検証と品質確保のために、非常に便利な機能ですね。
ステップ⒋Assertの条件を設定すると、Apidogはレスポンスで返されたデータがデータベースのデータに一致するかどうかを自動的に検証してくれます。
APIのデータをデータベースに書き込む
また、APIリクエストを送信して、レスポンスを取得できた場合、レスポンスで返された情報をデータベースにレコードとして保存することもできます。
例えば、ユーザー情報というAPIエンドポイントから取得できたユーザーをUsersというデータベースに保存しようとする場合、まずはレコードに保存したい情報をレスポンスから抽出する必要があります。
ステップ⒈当該APIの後処理で「抽出変数」をクリックして、抽出したい情報を定義します。ここで、ユーザーのIDとユーザーの名前を抽出する必要があるので、「抽出変数」を追加して、JSONPathを利用して、ユーザーのIDとユーザーの名前をそれぞれuser_idとnew_userといった環境変数に抽出します。
ステップ⒉そして、後処理で「データベース操作」を追加して、データベース接続でデータベースに接続してから、次のコマンドを入力して(SQLコマンドでも環境変数を適用可能)、「送信ボタン」をクリックすると、データベースに新しいレコードを作成します。
INSERT INTO users (id, name) VALUES ({{user_id}}, '{{new_user}}');
ステップ⒊上記の画像のように、APIレスポンスデータから見るユーザー名が福田になり、IDが1684になっています。そして、データベースのusersというテーブルを開くと、name=福田 id=1684というユーザーのレコードが自動的に追加されました。
データベースからSchemaを生成
また、データベースのメタデータからテーブル、カラムの情報を取得して、Schemaを自動的に生成することも可能です。キーマ定義のコーディング作業が不要になるため開発効率が大幅に向上できます。
ApidogでSchemaを新規に作成する際、「Jsonなどから生成」をクリックしてから、データベースからSchemaをインポートできます。Apidogは、自動的にデータベースのテーブル、カラム情報を取得し、データ型を判断します。
ここで、Schemaが簡単に作成して、APIのテストやドキュメンテーションの際に参照できるようになります。
RedisとMongoDBの操作
SQLタイプのデータベースだけではなく、No SQLのデータベース、例えばMongoDB、Redisなどのデータベースを利用している場合は、Apidogを使ってこれらに接続してCRUD操作を実現できます。より詳しい操作ガイドは、Apidogのヘルプドキュメントを確認してみてください。
MongoDB:
Redis:
まとめ
API開発において、データベースは欠かせない重要な要素です。APIを通じたデータの保存や取得、検索機能の実現、大量データの処理、トランザクション管理等、様々な目的でAPIとデータベースは密接に関わります。
Apidogを利用することで、APIテスト時の前後処理として簡単にデータベースを操作できます。データ取得してレスポンス検証、APIデータをデータベースへ書き込み、スキーマ自動生成等が実現でき、開発効率化が図れます。
いずれにせよ、API開発者にとってデータベース理解は必須であり、運用・保守フェーズにも影響します。Apidogのようなツールを活用しつつ、 データアクセス技術を磨き続けることが重要だと言えます。
より一部参照