4
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

API開発でデータベースに接続して操作するのが便利!

Posted at

本記事の対象

  • データベースからデータを取得してAPIで利用したい方
  • APIのデータをデータベースに書き込んだり、更新したりしたい方
  • データベースからスキーマを生成してAPIで利用したい方

APIとデータベース操作

特にWeb APIの開発中で、データベースを利用することは非常に一般的なことになりますね。例えば:

  • APIを通じてデータの保存・取得・更新などの CRUD 機能を実現
  • データの永続化のために外部のストレージが必要
  • 大量のデータを扱う場合はRDBやNoSQLなどのデータベース製品を利用するのが一般
  • トランザクション管理が必要な場合にデータベースの機能が必要
  • データ構造が複雑な場合にRDBのスキーマ機能を活用
  • 検索性能を高めるためにインデックスやクエリチューニングが必要

このように、APIアプリケーションといえども、永続化や検索性能を確保するためには外部データベースが欠かせません。API開発・運用において大きなコストがデータベースの適切な利用に割かれていると言えるでしょう。
APIとデータベース

ApidogでAPI開発中にデータベースに接続して操作可能

API開発中にデータベースに接続してCRUD操作を行うために、Apidogというツールを使うのが便利です。Apidogは、汎用されているMySQL、SQL Server(2014及びそれ以上のバージョン)、Oracle、PostgreSQL、MongoDB、Redisにも対応可能です。

Apidogの公式サイトを確認

本記事では、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リクエストを送信して、レスポンスを取得できた場合、レスポンスで返された情報をデータベースにレコードとして保存することもできます。

例えば、ユーザー情報というAPIエンドポイントから取得できたユーザーをUsersというデータベースに保存しようとする場合、まずはレコードに保存したい情報をレスポンスから抽出する必要があります。

ステップ⒈当該APIの後処理で「抽出変数」をクリックして、抽出したい情報を定義します。ここで、ユーザーのIDとユーザーの名前を抽出する必要があるので、「抽出変数」を追加して、JSONPathを利用して、ユーザーのIDとユーザーの名前をそれぞれuser_idnew_userといった環境変数に抽出します。
APIレスポンスからデータ抽出

ステップ⒉そして、後処理で「データベース操作」を追加して、データベース接続でデータベースに接続してから、次のコマンドを入力して(SQLコマンドでも環境変数を適用可能)、「送信ボタン」をクリックすると、データベースに新しいレコードを作成します。

INSERT INTO users (id, name)  VALUES ({{user_id}}, '{{new_user}}');

SQLコマンドで書き込み

ステップ⒊上記の画像のように、APIレスポンスデータから見るユーザー名が福田になり、IDが1684になっています。そして、データベースのusersというテーブルを開くと、name=福田 id=1684というユーザーのレコードが自動的に追加されました。
データベースに書き込み済みg

データベースからSchemaを生成

また、データベースのメタデータからテーブル、カラムの情報を取得して、Schemaを自動的に生成することも可能です。キーマ定義のコーディング作業が不要になるため開発効率が大幅に向上できます。

データベースのデータをSchemaに変換

ApidogでSchemaを新規に作成する際、「Jsonなどから生成」をクリックしてから、データベースからSchemaをインポートできます。Apidogは、自動的にデータベースのテーブル、カラム情報を取得し、データ型を判断します。

Schemaに変換済み

ここで、Schemaが簡単に作成して、APIのテストやドキュメンテーションの際に参照できるようになります。

RedisとMongoDBの操作

SQLタイプのデータベースだけではなく、No SQLのデータベース、例えばMongoDB、Redisなどのデータベースを利用している場合は、Apidogを使ってこれらに接続してCRUD操作を実現できます。より詳しい操作ガイドは、Apidogのヘルプドキュメントを確認してみてください。

MongoDB:

Redis:

まとめ

API開発において、データベースは欠かせない重要な要素です。APIを通じたデータの保存や取得、検索機能の実現、大量データの処理、トランザクション管理等、様々な目的でAPIとデータベースは密接に関わります。

Apidogを利用することで、APIテスト時の前後処理として簡単にデータベースを操作できます。データ取得してレスポンス検証、APIデータをデータベースへ書き込み、スキーマ自動生成等が実現でき、開発効率化が図れます。

いずれにせよ、API開発者にとってデータベース理解は必須であり、運用・保守フェーズにも影響します。Apidogのようなツールを活用しつつ、 データアクセス技術を磨き続けることが重要だと言えます。

より一部参照

4
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?