次の方法で共有


AJAX を含むサーバー側データ アクションの呼び出し

この記事では、Microsoft Dynamics 365 Commerce の Asynchronous JavaScript and XML (AJAX) を使用してサーバー側のデータ アクションを呼び出す方法について説明します。

Dynamics 365 Commerce オンライン ソフトウェア開発キット (SDK) は、AJAX を使用したクライアント ブラウザーからのサーバー側のデータ アクションの呼び出しをサポートしています。 この機能は、データ アクションにサードパーティ サービスの呼び出しに必要な API キーやシークレットなどの機密情報が含まれる場合に使用できます。 これらのシナリオでは、セキュリティ上の理由から、クライアント側のデータ アクションの呼び出しにより機密情報が明らかになることは望ましくありません。

AJAX を使用してサーバー上のデータ アクションを呼び出すには、サーバーで実行されるデータ アクションが ID パラメーター値によって指定される、次の URL ルートを使用することができます。 この URL ルートは、HTTP GET 要求と POST 要求の両方をサポートしています。

/api?id=<data_action_id>

オンライン SDK は、commerceAPIRequest ヘルパー ユーティリティ機能を提供します。 この機能は、追加のコンテキスト情報をサポートする機能など、AJAX 要求のコントロールを提供します。

GET 要求の形式

import * as MsDyn365 from '@msdyn365-commerce/core';

public async componentDidMount(): Promise<void> {
    const response = await MsDyn365.commerceApiRequest(
        this.props.context.request,
        '<data_action_id>',
        'get'
    );
}

POST 要求の形式

import * as MsDyn365 from '@msdyn365-commerce/core';

public async componentDidMount(): Promise<void> {
    const response = await commerceApiRequest(
        this.props.context.request,
        '<data_action_id>',
        'post',
        {
            content: 'sample text'
        }
    );
}

POST 要求の場合、次の例に示すように、POST の本文は、データ アクション内の ctx.requestContext.postBody コンテキスト オブジェクトからアクセスできます。

async function action(
        input: Msdyn365.IActionInput[],
        ctx: Msdyn365.IActionContext
    ): Promise<IWeatherConditions[]> {
    const postBody = ctx.requestContext.postBody?.content;
    return postBody;
}

追加リソース

データ アクションの概要

監視可能なデータ アクション

データ アクション キャッシュの設定