絶えず進化するウェブ開発の分野において、Drupal 11 は、動的なウェブサイトやアプリケーションを構築するための最も堅牢で柔軟なプラットフォームの1つとして際立っています。そのモジュール式アーキテクチャにより、開発者は幅広いプロジェクトのニーズを満たすために中核的な機能を調整・拡張できます。
そのような拡張機能の1つが Webform REST モジュールです。これは、RESTful API を介して Drupal と外部アプリケーションのシームレスな統合を可能にする強力なツールです。このガイドでは、Webform REST モジュールを Drupal 11 で使用するための実践的な入門を提供し、そのセットアップと設定を順を追って説明し、効果的な操作方法をデモンストレーションします。
この記事で学べること
この記事では以下のトピックを説明します:
-
Webform REST モジュールの概要
-
必要なモジュールと依存関係
-
Webform REST と REST UI のインストール
ReactにおけるCORSの理解
CORSは長い間、開発者、とくに初心者にとって混乱とフラストレーションの原因となってきました。この概念は、特にReact、Angular、Vueのようなフレームワークでシングルページアプリケーション(SPA)を構築し、第三者製のAPIと連携しようとする場合に、理解が難しいものとなりがちです。
このガイドでは、CORSを基礎から理解できるように説明します。Reactの簡単なアプリとExpressサーバーを一緒に構築して、CORSエラーが何によって引き起こされ、なぜ発生するのかを解説します。さらに重要なのは、これらの問題を解決するさまざまな方法を、一般的なケースとReact環境に特化したケースの両方について順を追って紹介します。
CORSとは何か?
CORS、すなわちCross-Origin Resource Sharing(クロスオリジンリソース共有)は、Webアプリケーションが異なるオリジンでホストされているサーバーからリソースを要求する方法を規定するプロトコルです。HTTPSが安全な通信のルールを定義するのと同様に、CORSはクロスオリジンリクエストのルールを定めます。
JSON:APIモジュールは、DrupalのEntity API、Field API、Typed Data APIを使用してDrupalで定義されたデータモデルを取得し、JSON:API仕様に準拠したAPIを介して公開し、Drupalが管理するデータ(エンティティ)との連携を容易にするように設計されています。
その際、データに対するDrupalのすべてのセキュリティ対策が尊重されます。
リソースとフィールドのリネームおよび無効化 は現在コアの一部になっています。
APIパス、リソースカウント、includesのデフォルトなどのリソースプロパティを変更する必要がある場合や、フィールドやリソースを無効化するインターフェースが必要な場合は、JSON:API Extrasを使用してください。
モジュールを有効にすると、/admin/config/services/jsonapiにアクセスして、JSON:APIが公開するすべての設定とコンテンツの一覧を確認できます。
JSON:APIは完全にエンティティベースです。つまり、ビジネスルールを処理したり、「CRUD」として考えられないことを行ったりすることはできません。新しいアカウントの登録、ユーザーのログイン、新しいパスワードの要求といったビジネスロジックは、JSON:APIの一部ではありません。これらの多くはDrupalコアによってすでに提供されています。
以下に、一般的なニーズと解決策の完全ではないリストを示します。
TL;DR
公開したいエンティティ以外のデータがある場合はRESTを選択してください。それ以外の場合は、JSON:APIを選択してください。
もう少し詳しく説明すると:
ファイルのアップロードがサポートされました。詳細についてはリリースノートを参照してください: https://www.drupal.org/node/3024331
次の2つの画像は、Postmanを使用してJSON:APIによるファイルアップロードをテストする方法を示しています。
一部のサイトでは、特定のJSON:APIリソースタイプやフィールドを公開したくない場合や、よりクリーンなインターフェースを提供するためにフィールドをリネームしたい場合があります。
これらの変更を可能にするために、JSON:APIはResourceTypeBuildEvents::BUILDというイベント名でResourceTypeBuildEventイベントオブジェクトをディスパッチします。これらのイベントの使用方法については、イベントのサブスクライブとディスパッチを参照してください。
サブスクライバーは次のメソッドを呼び出すことができます。