HTTP リクエストを作成し、ポータル Web API のエラーを処理する
[アーティクル] 2023/02/15
3 人の共同作成者
フィードバック
この記事の内容
Web API URL およびバージョン管理
HTTP メソッド
HTTP ヘッダー
ステータス コードの確認
応答からのエラーの解析
エラー コード
さらに 2 個を表示
Web API とのやりとりには、必要なヘッダーを含む HTTP リクエストの作成と、エラーを含む HTTP 応答の処理が含まれます。
重要
この機能を使用するには、ポータルのバージョンが 9.3.3.x 以降である必要があります。
次のテーブルの形式を使用して、Web API URLを作成します。
テーブルを展開する
部分
Description
プロトコル
https://
ベース URL
<portal URL>
Web API パス
_api
リソース
使用するテーブルの論理名
たとえば、ケースを参照する場合は次の形式を使用します。
https://contoso.powerappsportals.com/_api/case
すべての Web API リソースは、Web ロールを持つコンテキスト内のそれぞれの ポータル テーブルのアクセス許可 に従います。
HTTP リクエストでは、さまざまな種類のメソッドを使用できます。 ただし、ポータル Web API は、次のテーブルのメソッドのみをサポートします。
テーブルを展開する
Method
使い方
入手
テーブルからデータを取得するときに使用します。
投稿する
レコードの作成時に使用します。
PATCH
テーブルを更新するとき、または upsert 操作を実行するときに使用します。
Delete
レコードまたはレコードの個々のフィールド値を削除するときに使用します。
PUT
レコードの個々のフィールドを更新するために、限られた状況で使用します。
WebAPI は JSON のみをサポートします。 各 HTTP ヘッダーには以下を含める必要があります。
アプリケーション/json の 承認 ヘッダー値 (応答ボディが期待されていない場合でも)。
要求本文に JSON データが含まれる要求の場合は、 application/json
を値に持つ コンテンツの種類 ヘッダーを含める必要があります。
現在の OData バージョンの 4.0 ですが、今後のバージョンで新機能が使用できるようになる可能性があります。 次の構文を使用して、将来コードに適用される OData バージョンが明確かどうかを確認します。
Accept: application/json
OData-MaxVersion: 4.0
OData-Version: 4.0
例: CSRF トークンのラッパー AJAX 関数
(function(webapi, $){
function safeAjax(ajaxOptions) {
var deferredAjax = $.Deferred();
shell.getTokenDeferred().done(function (token) {
// add headers for ajax
if (!ajaxOptions.headers) {
$.extend(ajaxOptions, {
headers: {
"__RequestVerificationToken": token
}
});
} else {
ajaxOptions.headers["__RequestVerificationToken"] = token;
}
$.ajax(ajaxOptions)
.done(function(data, textStatus, jqXHR) {
validateLoginSession(data, textStatus, jqXHR, deferredAjax.resolve);
}).fail(deferredAjax.reject); //ajax
}).fail(function () {
deferredAjax.rejectWith(this, arguments); // on token failure, pass the token ajax and args
});
return deferredAjax.promise();
}
webapi.safeAjax = safeAjax;
})(window.webapi = window.webapi || {}, jQuery)
webapi.safeAjax({
type: "GET",
url: "/_api/contacts?$select=firstname,lastname",
contentType: "application/json",
success: function (res) {
console.log(res);
}
});
webapi.safeAjax({
type: "POST",
url: "/_api/accounts",
contentType: "application/json",
data: JSON.stringify({
"name": "Sample Account"
}),
success: function (res, status, xhr) {
console.log("entityID: "+ xhr.getResponseHeader("entityid"))
}
});
webapi.safeAjax({
type: "PATCH",
url: "/_api/accounts(00000000-0000-0000-0000-000000000001)",
contentType: "application/json",
data: JSON.stringify({
"name": "Sample Account - Updated"
}),
success: function (res) {
console.log(res);
}
});
webapi.safeAjax({
type: "DELETE",
url: "/_api/accounts(00000000-0000-0000-0000-000000000001)",
contentType: "application/json",
success: function (res) {
console.log(res);
}
});
各 HTTP 要求応答には、ステータス コードが含まれています。 ポータル Web API で返される状態コードには、次が含まれます。
テーブルを展開する
コード
Description
タイプ
200 OK
この応答は操作で応答本文にデータが返されるときに発生します。
成功
204 コンテンツがありません
この応答は操作が成功した際に発生しますが、応答本文ではデータが返されません。
成功
403 無効
この応答は次のような種類のエラーの場合に発生します。 AccessDenied AttributePermissionIsMissing TablePermissionWriteIsMissingDuringUpdate TablePermissionCreateIsMissing TablePermissionCreateIsMissing TablePermissionAppendIsMissngDuringAssociationChange TablePermissionAppendIsMissngDuringAssociationChange
クライアント エラー
401 未承認
この応答は次のような種類のエラーの場合に発生します。MissingPortalRequestVerificationToken MissingPortalSessionCookie
クライアント エラー
413 ペイロードが大きすぎます
この応答は要求の長さが長すぎるときに発生します。
クライアント エラー
400 不正なリクエスト
この応答は引数が無効である場合に発生します。 InvalidAttribute
クライアント エラー
404 見つかりません
この応答はリソースが存在しない場合に発生します。 Web API について、テーブルは公開されていません。
クライアント エラー
405 許可されていないメソッド
このエラーは、メソッドとリソースの組み合わせが正しくない場合に発生します。 たとえば、DELETE または PATCH をテーブルのコレクションに対して使用することはできません。 この状況は次のような種類のエラーの場合に発生する可能性があります。InvalidOperation NotSupported
クライアント エラー
501 実装されていません
この応答は一部の要求の操作が実装されていない場合に発生します。
サーバー エラー
503 サービスは使用できません
この応答は Web API サービスを使用できない場合に発生します。
サーバー エラー
まだ内部エラーが含まれている次の HTTP 応答例を検討してください。
{
"error":{
"code": "This code is not related to the http status code and is frequently empty",
"message": "A message describing the error",
"cdscode": "Dataverse error code",
"innererror": {
"code": "800xxxx",
"message": "A message describing the error. This is frequently the same as the outer message.."
}
}
}
処理されたすべてのシナリオで、エラーコードは 16 進形式で表示されます。 次の表に、各エラーコードとそれぞれの名前およびメッセージを示します。
テーブルを展開する
エラー コード
名前エラー
エラー メッセージ
900400FF
NoAttributesForTableCreate
[テーブルの作成] アクションに属性がありません。
90040100
InvalidAttribute
テーブル {1} の属性 {0} が見つかりません。
90040101
AttributePermissionIsMissing
テーブル {1} の属性 {0} が Web API で有効になっていません。
90040102
TablePermissionWriteIsMissingDuringUpdate
{0} エンティティを更新するためのアクセス許可がありません。
90040103
TablePermissionCreateIsMissing
{0} エンティティを作成するためのアクセス許可がありません。
90040104
TablePermissionCreateIsMissing
{0) エンティティを削除するためのアクセス許可がありません。
90040105
TablePermissionAppendIsMissngDuringAssociationChange
テーブル {0} の {1} との関連付けまたは関連付けの解除を行うためのアクセス許可がありません。
90040106
TablePermissionAppendToIsMissingDuringAssociationChange
テーブル {1} の {0} への関連付けまたは関連付けの解除を行うためのアクセス許可がありません
90040107
HttpAntiForgeryException
偽造防止 Cookie トークンとフォーム フィールド トークンが一致しません。
90040109
MissingPortalSessionCookie
無効なセッション トークンはスローするメソッドに渡されました。
9004010C
ResourceDoesNotExists
セグメント '{0}' のリソースが見つかりません。
9004010D
CDSError
CDS エラーが発生しました。
HTTP ステータス コード 500 の未処理エラーに対する応答は、"リクエストの処理中に予期しないエラーが発生しました" というエラーが返されます。
ポータル Web API の概要 ポータルは、Web API を使用して操作を書き込み、更新、および削除します Web API を使用したポータルの読み込み操作