Power Pages サーバー ロジックを使用すると、作成者はサーバー上で JavaScript を安全に実行でき、サイト ランタイムに直接拡張性が追加されます。
サーバー ロジックはサーバー上で実行されるため、ブラウザーから非表示になり、Web ロールとテーブルのアクセス許可によって保護されます。 Power Pages デザイン スタジオでロジックを追加し、IntelliSense とコンパイル時の検証を提供する Visual Studio Code を使用してロジックを作成します。
Dataverse にはコードと構成が格納されるため、サーバー ロジックは、他の Power Pages コンポーネントと同じライフサイクル管理およびデプロイ パイプラインからメリットを得られます。
言語サポート
サーバー ロジックを使用すると、開発者はブラウザー API (DOM API、、fetch など) をサポートせずにXMLHttpRequest 標準に準拠したネイティブ JavaScript コードを記述できます。 安全でないパターンや制限されたパターンもブロックされ、安全な実行が保証されます。 詳細については、「 サーバー ロジックの作成の制限事項」を参照してください。
サーバー ロジックでできること
Power Pages のサーバー ロジックを使用すると、作成者や開発者は、制御、スケーラビリティ、セキュリティを強化するために、重要な操作をブラウザーからサーバーに移動できます。 これにより、機密性の高いロジックやデータをクライアント側で公開することなく、サイトで複雑なタスクと統合を実行できます。
サーバー ロジックを使用すると、次のことができます。
- 外部サービスと API への接続: REST API、Azure Functions、またはその他のビジネス システムと安全に統合して、データの交換、アクションのトリガー、動的な情報の取得を行います。
- セキュリティで保護されたデータ操作を実行する: サーバー上でデータバース操作 (クエリ、更新、削除など) を実行し、ビジネス ロジックと検証を一貫して適用します。
- カスタム ロジックと変換を実行する: データを処理または操作してからクライアントに返します。 たとえば、外部参照を使用して合計を計算したり、ビジネス ルールを検証したり、データをエンリッチしたりします。
- 処理された応答をページに返す: 必要なデータとフィルター処理されたデータのみをクライアント ページに送信し、レンダリングの高速化とペイロードの削減を実現します。
- セキュリティで保護された認証を簡素化する: クライアント コードではなく、サーバー上のサービス資格情報と API キーを管理し、セキュリティで保護された準拠した統合プラクティスを維持します。
サーバー ロジックを使用する利点
サーバー ロジックは、エンタープライズ レベルの機能拡張を Power Pages にもたらし、組織がより安全でスケーラブルで保守しやすい Web エクスペリエンスを構築するのに役立ちます。
主な利点は次のとおりです。
- セキュリティ強化: ビジネス ロジック、シークレット、API キーを実行してサーバーに格納します。ブラウザーやエンド ユーザーには公開されません。
- 統合の柔軟性: Power Pages を Azure Functions、REST API、Dataverse アクション、ビジネス サービスなどの外部システムとシームレスに接続します。
- パフォーマンスと効率の向上: 負荷の高い計算、検証、データ処理をサーバーにオフロードし、クライアント側のワークロードを削減し、ページの応答性を向上させます。
- チャネル間の一貫性: Web ページ、フォーム、統合に同じロジックを適用し、アプリケーション全体でデータの検証と動作を統一します。
- 一元的なメンテナンス: 複数のクライアント スクリプトまたはページを再デプロイまたは編集することなく、ロジックを 1 か所で更新または調整します。
サーバー ロジックをセキュリティで保護する
サーバー ロジックでコードを実行するには、ユーザーが作成者によって構成された適切なアクセス許可を持っている必要があります。 アクセスは Web ロールとテーブルのアクセス許可によって制御され、サーバー ロジックが特定のテーブルにアクセスできるかどうかも決定されます。
サーバー ロジック API を認証する
カスタム認証コードを含める必要はありません。 認証と承認は、アプリケーション セッションによって管理されます。 すべてのサーバー ロジック API 呼び出しには、クロスサイト リクエスト フォージェリ (CSRF) トークンが含まれている必要があります。
外部サービス呼び出しのガバナンス設定
サーバー ロジックは、外部 REST API、Azure Functions、およびその他のビジネス システムに接続して、サーバー側の統合を実行できます。 データ流出を防ぐために、テナント管理者は、サーバー ロジックがサイトごとに行う 送信 HTTP 呼び出しをブロック できます。 このガバナンス制御が適用されると、サーバー ロジックが試行する送信 HTTP 呼び出しはすべて失敗します。 詳細については、「サーバー ロジックからの外部サービス呼び出しを無効にする」を参照してください。
サイトの設定
サーバー ロジックを構成するには、次の省略可能なサイト設定を使用します。
| Name | Description | Default |
|---|---|---|
| ServerLogic/Enabled | 機能の有効化/無効化 | true |
| ServerLogic/AllowedDomains | 呼び出すことができる外部ドメインを制限する | 許可されているすべてのドメイン |
| ServerLogic/TimeoutInSeconds | 最大実行時間 (秒単位)。 タイムアウトは最大 240 秒まで増やすことができます | 120 |
| ServerLogic/AllowNetworkingToAllDomains | ドメイン間のネットワークを許可する | 正しい |
サーバー ロジック API URL
次の形式を使用して API URL を構築します。
https://<site-url>/_api/serverlogics/<server-logic-name>
例:
https://contoso.powerappsportals.com/_api/serverlogics/exchangerate
サポートされている HTTP メソッド
サーバー ロジックでは、データに対して操作を実行したり、外部サービスと対話したりする標準的な HTTP メソッドがサポートされています。 各メソッドは、サーバー ロジック コードで定義した関数にマップされます。
| メソッド | 関数シグネチャ | 使用方法 | Description |
|---|---|---|---|
| 取得 | function get() { } | データを取得します。 | Dataverse、外部 API、またはカスタム ビジネス ロジックからデータをフェッチするために使用されます。 データが変更されない読み取り専用操作に最適です。 |
| 投稿 | function post() { } | レコードを作成するか、新しいデータを送信します。 | Dataverse に新しいレコードを挿入したり、外部システムにデータを送信したりするために一般的に使用されます。 アクションを作成またはトリガーする必要があるフォームの送信またはワークフローに適しています。 |
| PUT | function put() { } | レコードを置換または更新します。 | レコードまたはデータセット全体を更新または置換します。 通常、完全な更新または同期のシナリオに使用されます。 |
| パッチ | function patch() { } | レコードの一部を更新または挿入(アップサート)します。 | レコード全体を置き換えずに、既存のデータの部分的な更新を実行します。 特定のフィールドのみを変更する必要がある場合は、このメソッドを使用します。 |
| 削除 | function del() { } | レコードまたはフィールドを削除します。 | Dataverse または外部システムからレコードまたはデータを削除します。 意図しないデータ損失を防ぐために慎重に使用する必要があります。 |