StackOverflow の 2022 年の調査によると、プロの開発者の 46% がワークスペースで使用する最も人気のあるデータベースとして MySQL を評価しています。プログラマとして、私たちは、すぐに利用でき、堅牢で、十分にテストされたコードを繰り返し書くことに煩わされるべきではありません。
この時点での実装プロセスは機械的で反復的であり、エラーや見落としが発生しやすいにもかかわらず、この問題は REST API 分野で依然として残っています。この見落としにはいくつかの理由からコストがかかります:
私たちプログラマーにとって幸いなことに、DreamFactory プラットフォームは、API ドキュメント、生成、セキュリティのための一元的なソリューションを提供することで、チームをこれらすべての煩わしさなどから簡単に解放します。このチュートリアルでは、MySQL データベース用の REST API を構築、保護、デプロイすることがいかに簡単であるかを学びます。
目次
MySQL API は、開発者がアプリケーションまたはスクリプトからプログラムで MySQL データベースと対話できるようにする関数、プロトコル、およびツールのセットです。
この API は、アプリケーションが MySQL データベースにクエリを送信し、データを取得し、データを変更し、さまざまなデータベース操作を実行する方法を提供します。アプリケーション コードとデータベース サーバーの間の中間層として機能し、シームレスな通信とデータ操作を促進します。
一般的な MySQL API には、MySQL Connector/ODBC、MySQL Connector/J (Java 用)、MySQLi (PHP 用) などが含まれ、それぞれが特定のプログラミング言語またはフレームワークに合わせて調整されています。
MySQL API は、アプリケーションと MySQL データベース間の対話を促進することにより、ソフトウェア開発において極めて重要な役割を果たします。
これらの API は「中間」として機能し、データベース操作の複雑さを抽象化し、開発者に標準化されたインターフェイスを提供します。その重要性は、アプリケーションがデータを効率的に保存、取得、変更、管理できるようにすることにあります。
MySQL API は、さまざまなプログラミング言語およびフレームワークとの互換性を提供し、開発者が好みのツールを使用して MySQL を操作できるようにします。 SQL インジェクションなどの一般的なセキュリティ脆弱性から保護するために、準備されたステートメントや入力検証などの機能を提供することでセキュリティを強化します。
接続プーリングやキャッシュなどのパフォーマンス最適化機能は、データベースの対話効率の向上に役立ちます。 MySQL API によってもたらされる移植性は、アプリケーションが大規模なコードのオーバーホールなしで潜在的に別のデータベース システムに移行できることを意味し、そのスケーラビリティ機能により増加したワークロードの処理に適しています。
MySQL API は MySQL 開発者コミュニティの広範なサポートの恩恵を受けており、開発者向けに豊富なリソース、ライブラリ、ツールが確保されています。
DreamFactory は、MySQL、Microsoft SQL Server、Oracle、PostgreSQL、MongoDB などの多数のデータベース用の REST API を生成できます。
これを行うには、DreamFactory 管理インターフェイスにログインし、サービス に移動し、サービス作成インターフェイスの左側にある 作成 ボタンをクリックしてサービス作成インターフェイスに入ります。画面。そこから、API Generation > に移動して MySQL サービス タイプを選択します。 [データベース] をクリックし、データベース オプションから MySQL を選択します (以下のスクリーンショットを参照)。
次に、名前、ラベル、説明を入力するように求められます (スクリーンショットの下)。後の 2 つは管理インターフェイス内で参照目的でのみ使用されますが、名前の値は、すぐにわかるように API URL の一部を構成するため、特に重要です。
最後に、設定 タブをクリックします。ここで、データベース接続資格情報の入力を求められます (以下のスクリーンショットを参照)。これは実際には何も新しいことではありません。ホスト名、ユーザー名、パスワード、データベースを指定します。さらに、オプションで、ドライバー オプション、タイムゾーン、キャッシュ設定などの他の構成特性を指定できます。このチュートリアルでは、必須フィールドのみに限定し、オプション機能には触れないままにします。
資格情報を設定したら、画面の下部にある [保存] ボタンを押すだけで、信じられないかもしれませんが、REST API が生成されます。
DreamFactory は、API に加えて、API 用の広範なインタラクティブな Swagger ドキュメントのセットも自動生成します。これにアクセスするには、管理インターフェイスの上部にある [API ドキュメント] タブをクリックし、新しく生成されたサービスを名前で選択します。ストアド プロシージャの実行、CRUD 操作の実行、ビューのクエリなどに役立つ 44 のエンドポイントが表示されます。たとえば、次のスクリーンショットは、新しく生成された MySQL REST API エンドポイントのほんの一部を示しています!
DreamFactory で生成されたすべての API は、(少なくとも) API キーによって自動的に保護されます。オプションで、基本認証、SSO、またはディレクトリ サービス (LDAP および Active Directory) を使用してユーザーを認証できます。さらに、各 API キーやユーザーを、ユーザーがアクセスを許可されるサービスを正確に決定する * ロール* に関連付けることができます。それだけでなく、対話を特定のデータベース テーブルまたはテーブルのセット、特定のエンドポイントに制限したり、許可される HTTP メソッドを制限したりすることもできます。
API に代わって MySQL データベースとの対話を担当するユーザーを保護することは、API の開発および統合プロセスの非常に重要な部分です。 MySQL 権限と DreamFactory によるデータ セキュリティの向上に関するその他の推奨事項をご覧ください
例として、関連付けられた API キーが、新しく作成された MySQL API 内で読み取り専用形式で単一のテーブルと対話するように制限する新しいロールを作成してみましょう。これを行うには、「役割」タブに移動し、「作成」ボタンをクリックします。以下のスクリーンショットにあるインターフェイスが表示されます。
次に、「アクセス」タブをクリックします。ここで、ロールが実行できることを定義します。以下のスクリーンショットでは、ロールを MySQL サービスとの対話に制限しており、そのサービス内では、ロールは GET メソッドを介してのみ _table/employees* エンドポイントと対話できることがわかります。私たちはロックダウン中です!
保存 ボタンをクリックして役割を保存します。次に、新しい API キーを作成し、そのキーをこのロールに関連付けます。これを行うには、[API タイプ] ドロップダウンの下にある [API キー] タブをクリックし、[API キー] を選択して、[+] ボタンをクリックします。新しいアプリに名前と説明を割り当て、アクティブ に設定されていることを確認してから、以下のスクリーンショットと同じように MySQL のデフォルトの役割を割り当てます。アプリの場所の設定に関しては、Web アプリケーションやモバイル アプリケーション、または別の Web サービス経由で API を操作する予定がある場合、「ストレージは必要ありません」を選択する必要があります。
[保存] ボタンを押すと、アプリのインデックス画面に戻り、新しい API キーをコピーできます。後で参照できるように、キーをテキスト ファイルにコピーします。
DreamFactory 管理インターフェースの外部から API をテストできるようになる前に、最後の構成手順が 1 つあります。新しい API に対して CORS (Cross-Origin Resource Sharing) を有効にする必要があります。これは、[Config] ドロップダウンで [CORS] を選択すると見つかります。デモンストレーションの目的で、以下のスクリーンショットのようにデフォルトの CORS 設定を設定できます。これにより、すべてのネットワーク アドレスからの API 制限付きトラフィックが許可されます。
API が生成され、API キーと関連ロールが作成され、CORS が設定されたら、クライアント経由で API との対話を開始する準備が整いました。私は MacOS での HTTP テストに Insomnia を使用するのが好きですが、もう 1 つの一般的なソリューションは Postman です。
次のスクリーンショットでは、Insomnia を使用して、GET リクエストを使用して /api/v2/_table/employees エンドポイントに接続しています。
この API キーは、GET メソッドを使用して /api/v2/_table/employees/* エンドポイントとのみやり取りできるようにロックダウンされていることに注意してください。では、このテーブルに POST しようとするとどうなるでしょうか?次のスクリーンショットに示すように、401 (不正) ステータス コードが返されます。
明らかに、DreamFactory が利用可能な唯一のソリューションではありません。 MySQL REST API を作成するもう 1 つの方法は、手動でコーディングすることですが、これはかなり時間がかかり、より困難です。 API のセキュリティなど、API を手作りする場合には他にも懸念すべき事項があります。ここでは、次の API の手動コーディングを開始する方法に関する簡単なヒントをいくつか紹介します。
MySQL REST API を構築する最初のステップは、クライアントから受信した HTTP リクエストを処理し、適切なコンテンツで応答する Apache や Nginx などの Web サーバーをセットアップすることです。また、サーバーに PHP をインストールする必要もあります。PHP は、MySQL と対話してデータを取得または保存できるサーバー側のスクリプト言語です。最後に、テーブルにデータを保存および管理できるリレーショナル データベース管理システムである MySQL をインストールする必要があります。これらすべてのコンポーネントをセットアップしたら、REST API の構築を開始する準備が整います。
データベースは、列と行を含むテーブルなど、構造化された方法で編成された関連データのコレクションです。 MySQL は、データベースとテーブルを作成および管理できる人気のリレーショナル データベース管理システムです。
MySQL でデータベースを作成するには、MySQL コマンドライン インターフェイスの CREATE DATABASE コマンド、または phpMyAdmin などのツールを使用できます。
PHP から MySQL データベースに接続するには、MySQLi や PDO などのいくつかの拡張機能のいずれかを使用できます。接続を確立したら、SQL クエリを実行してデータベースからデータを取得できます。 SQL クエリは、API を通じて公開したいデータを取得するように設計する必要があり、SQL インジェクション攻撃を防ぐためにパラメータ化する必要があります。
データベースからデータを取得したら、PHP の組み込み関数を使用してデータを JSON としてフォーマットできます。 JSON は、解析が容易な軽量のデータ形式であり、多くのプログラミング言語でサポートされています。
PDO は、PHP でデータベースにアクセスするための一貫したインターフェイスを提供する強力で柔軟な拡張機能です。 PDO は、MySQL などのさまざまなデータベース ドライバーで使用でき、SQL インジェクション攻撃の防止に役立つプリペアド ステートメントやパラメーター バインディングなどの機能を提供します。
MySQL で PDO を使用するには、新しい PDO オブジェクトを作成し、データベースの接続の詳細を渡す必要があります。その後、prepare() メソッドを使用して SQL ステートメントを準備し、bindParam() または bindingValue() メソッドを使用してパラメーターをバインドし、execute() メソッドを使用してステートメントを実行できます。最後に、fetch()、fetchAll()、fetchColumn() などのメソッドを使用してクエリの結果をフェッチできます。
json_encode() 関数は、データを JSON 形式の文字列に変換するために使用できる組み込みの PHP 関数です。配列やオブジェクトなどの任意のデータ型を関数に渡すことができ、それはクライアント アプリケーションで簡単に使用できる JSON 文字列に変換されます。
JSON 形式の文字列を取得したら、適切な HTTP ヘッダーを使用してそれをクライアントに出力する必要があります。 PHP では、header() 関数を使用してヘッダーを設定できます。これにより、コンテンツ タイプや応答に関するその他のメタデータを指定できます。たとえば、JSON データを出力するには、Content-Type ヘッダーを「application/json」に設定します。
データを JSON 形式で出力し、適切な HTTP ヘッダーを設定することで、REST API がクライアント アプリケーションで簡単に利用でき、標準の Web 規約に準拠していることを確認できます。
HTTP リクエストは、クライアント (Web ブラウザーやモバイル アプリなど) が API と通信してデータをリクエストしたり、その他のアクションを実行したりする方法です。これらのリクエストを処理するには、リクエストを処理して適切な応答を返すことができる PHP コードを作成する必要があります。
PHP には、$_SERVER、$_GET、$_POST、$_REQUEST など、現在のリクエストに関する情報にアクセスするために使用できる関数がいくつか用意されています。これらの変数には、HTTP メソッド (GET または POST など)、URL パス、クエリ パラメーターまたはリクエスト本文データなどの情報が含まれます。
さまざまな種類のリクエストを処理するには、受信データを分析して実行するアクションを決定できる PHP コードを作成する必要があります。たとえば、クライアントが API からデータを取得する GET リクエストを作成している場合、コードは SQL クエリを実行してデータを取得し、それを JSON 応答として返す可能性があります。クライアントが新しいレコードを作成する POST リクエストを行っている場合、コードは新しいデータを MySQL データベースに挿入し、成功メッセージを返す可能性があります。
API にエラー処理と検証を実装するには、エラーを検出して応答し、ユーザー入力を検証できる PHP コードを作成する必要があります。 PHP には、trigger_error() や set_error_handler() など、エラー処理に使用できるいくつかの組み込み関数が用意されています。検証には、正規表現、PHP フィルター、またはカスタム検証関数を使用できます。
API をデプロイするには、PHP ファイルとその他の必要なファイル (CSS、JavaScript、画像など) を Web サーバーにアップロードする必要があります。 Web サーバーの構成によっては、API が正しくルーティングされるように .htaccess ファイルを変更する必要がある場合があります。
API をデプロイしたら、cURL や Postman などのツールを使用してテストできます。これらのツールを使用すると、HTTP リクエストを API に送信し、応答データを検査できます。これらのツールを使用すると、さまざまなタイプのリクエスト (GET、POST、PUT、DELETE など) をテストし、エラー処理と検証をテストして、API が正しいデータを正しい形式 (JSON や XML など) で返しているかどうかを確認できます。 ).
API をテストするときは、パフォーマンス、セキュリティ、使いやすさに注意を払うことが重要です。 API が適切に動作し、安定していることを確認するには、さまざまな条件 (高トラフィックや低速ネットワーク接続など) で API をテストする必要があります。また、API のセキュリティ脆弱性 (SQL インジェクションやクロスサイト スクリプティングなど) をテストし、クライアントにとって使いやすく理解しやすいものであることを確認する必要があります。
MySQL データベースからデータを取得する単純な REST API の PHP コードの例を次に示します。
信じられないかもしれませんが、DreamFactory ができることのほんの表面をなぞっただけです。 SQL Server、Oracle、または MongoDB コネクタの実際の動作を確認したい場合、またはコードを書かずに SOAP サービスを REST に変換することがいかに簡単であるかを確認したい場合は、当社のエンジニアリング チームとのデモをスケジュールしてみてはいかがでしょうか。 https://www.dreamfactory.com/products にアクセスして、今すぐデモをスケジュールしてください!
DreamFactory がサポートするその他のデータベース:
この投稿「6 つの簡単なステップで MySQL REST API を作成する方法」は、DreamFactory Software-Blog に最初に掲載されました。
以上がMySQL REST API を asy の手順で作成する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。