APIヘッダーリファレンス
API ヘッダーは、クライアントのリクエストとサーバーがそれを処理する方法に関する重要な情報をサーバーに提供する HTTP リクエストのコンポーネントです。
API ヘッダーは、 REST API と GraphQLの両方で使用できます。
REST API の場合、cURL コマンドを使用してヘッダーを含めることができます。 必要なヘッダーを指定するには、 --header "ヘッダー: 値" 構文を使用します。 含めるヘッダーは、対話する特定の REST API とそれがサポートする認証メカニズムによって異なります。
GraphQL の場合、GraphQL ブラウザ インターフェースから直接ヘッダーのキー/値のペアを入力できます。 あるいは、cURL コマンドを使用する場合は、 --data パラメータを使用して GraphQL クエリを含めることができます。また、各ヘッダーには、 --header "Header: Value" 構文を使用して必要なヘッダーを含めることができます。
以下は GraphQL リクエストを行う cURL コマンドの例です。
curl \
http://localhost:8080/o/graphql \
--data '{"query":"{ blogPostings(filter: \"\", page: 1, pageSize: 10, search: \"\", siteKey: \"20117\", sort: \"\") { page items { id articleBody headline creator { name } } } }"}' \
--header "content-type: application/json" \
--request POST \
--user test@liferay.com:test
ヘッドレス API リクエストを行うときに使用できるヘッダーは次のとおりです。
許可する
Accept ヘッダーは、クライアントがサーバーからの応答として受信できるメディア タイプを指定します。 通常、クライアントが処理できるタイプのリストが含まれます。 有効なオプションは json (デフォルト) と xmlです。
以下は、 http://example.com/o/headless-admin-user/v1.0/user-accounts に GET リクエストを送信し、クライアントが応答で XML 形式のデータを受け入れることを指定するヘッダーを含む cURL コマンドの例です。
curl \
"http://example.com/o/headless-admin-user/v1.0/user-accounts" \
--header "Accept: application/xml" \
--request "GET" \
Accept-Language
Accept-Language ヘッダーは、通常は応答コンテンツに対してクライアントの優先自然言語を指定するため、サーバーは、利用可能な場合は優先言語のコンテンツで応答します。
すべての有効な言語タグ(ISO-639 言語識別子と ISO-3166-1 alpha-2 国識別子)は有効なオプションです(例: en-US、 es-ES、または pt-BR)。
選択した言語の値が空の場合、クエリはデフォルトの言語で結果を返します。
応答コンテンツの優先言語がブラジル系ポルトガル語である cURL コマンドの例を次に示します。
curl \
"http://example.com/o/c/customobjects/" \
--header "Accept: application/json" \
--header "Accept-Language: pt-BR" \
--request "GET" \
Liferay DXP 2024.Q2/Portal GA120 以降では、カスタム オブジェクトを操作するときに、Rest API と GraphQL の両方で Accept-Language ヘッダーを使用して、選択した言語で値を返すことができます。
Liferay DXP 2024.Q2+/Portal GA120+では、カスタムオブジェクトのフィールドで エントリの翻訳を有効にする オプションがオフになっている場合、そのフィールドは複数の言語への翻訳をサポートしません。 デフォルト以外の言語の値を保存し、言語を指定せずにフィールドをクエリすると、応答は空になります。 これは、デフォルトの言語値がフォールバックとして自動的に使用されないために発生します。 応答には、クエリした言語に対して保存された値のみが含まれます。
Accept-Language ヘッダーがサーバー構成で許可リストに登録されていることを確認して、 Web コンテンツ内の翻訳 が期待どおりに機能するようにしてください。 この設定により、サーバーは言語ベースのコンテンツ配信のヘッダーを認識して処理できるようになります。
X-Accept-All-Languages
X-Accept-All-Languages ヘッダーは、クライアントがコンテンツをすべての利用可能な言語で返すように要求していることをサーバーに示します。 このヘッダーは標準の Accept-Language ヘッダーを超えた拡張機能であり、クライアントがこの動作を明示的に指定できるようにします。
利用可能なすべての言語でコンテンツを返すには、パラメータとして true を使用し、それ以外の場合は false を使用します (デフォルトの動作)。
以下は、 example.com/o/headless-admin-user/v1.0/user-accountsにリクエストを送信し、サーバーが要求されたコンテンツを利用可能なすべての言語で返すように指定する cURL コマンドの例です。
curl \
"http://example.com/o/headless-admin-user/v1.0/user-accounts" \
--header "X-Accept-All-Languages: true" \
承認
Authorization ヘッダーは、認証用の資格情報を提供します。 クライアントは、基本認証、ベアラー トークン、OAuth トークンなどのさまざまな認証メカニズムを使用して、サーバーに対して自身を認証できます。
Liferay では、Authorization ヘッダーは DXP の認証フレームワークを使用して、どのユーザーがリクエストを行っているかを識別します。 このヘッダーと Cookie ヘッダーの両方が指定されていない場合、リクエストはゲスト (認証されていない) ユーザーとして試行されます。
Authorization ヘッダーの有効なオプションには、Base64 でエンコードされた資格情報を使用した基本認証や、OAuth トークンを使用したベアラー トークンの使用が含まれます。
以下は、 http://example.com/o/c/customobjects/ への GET リクエストを指定し、Bearer トークン メソッドを使用して認証トークンを提供する cURL コマンドの例です。
curl \
"http://example.com/o/c/customobjects/" \
--header "Accept: application/json" \
--header "Accept-Language: pt-BR" \
--header "Authorization: Bearer YOUR_ACCESS_TOKEN_HERE" \
--request "GET" \
クッキー
Cookie ヘッダーは、サーバーによって以前に保存された Cookie をクライアントのブラウザに送信するため、サーバーはセッション状態を維持し、複数のリクエストにわたってユーザー アクティビティを追跡します。
Liferay では、Cookie ヘッダーは、DXP の認証フレームワークを使用してユーザーのセッションを識別および追跡する JSESSIONID 値を使用します。 これと 承認 の両方が指定されていない場合、リクエストはゲスト (認証されていない) ユーザーとして試行されます。
以下は、指定された URL への GET リクエストを実行し、 JSESSIONID 値を持つ Cookie ヘッダーを含む cURL コマンドの例です。
curl \
"http://example.com/o/headless-admin-user/v1.0/user-accounts" \
--header "Authorization: Bearer YOUR_ACCESS_TOKEN_HERE" \
--header "Cookie: JSESSIONID=6349351B37C3EE1F6BA4E128107E9A34" \
--request "GET" \
Content-Type
Content-Type ヘッダーは、クライアントからサーバーに送信されるリクエスト ペイロードのメディア タイプを示し、それに応じてデータを管理できるようにします。
Liferayでは、バイナリデータを multipart/form-dataとしてアップロードできます。
以下は、 http://example.comに POST リクエストを送信し、 myfile.txtという名前のファイルを添付する cURL コマンドの例です。 このコマンドには、ファイルやその他のデータ フィールドをメッセージの一部として送信するために、リクエスト ボディが multipart/form-data としてフォーマットされることを指定するヘッダーが含まれています。
curl \
"http://example.com" \
--form "file=@myfile.txt" \
--header "Content-Type: multipart/form-data; boundary=ARBITRARY" \
--request "POST" \