HTTP-Anforderungen verfassen und Fehler für die Web API-Portale behandeln
Hinweis
Ab 12. Oktober 2022 ist Power Apps-Portale Power Pages. Weitere Informationen: Microsoft Power Pages ist jetzt allgemein verfügbar (Blog)
Wir werden die in Kürze migrieren und die Dokumentation für Power Apps-Portale mit der Power Pages-Dokumentation zusammenführen.
Die Interaktion mit der Web-API umfasst das Erstellen von HTTP-Anforderungen mit den erforderlichen Headern und das Behandeln von HTTP-Antworten, einschließlich etwaiger Fehler.
Wichtig
- Ihre Portalversion muss 9.3.3.x oder höher sein, damit diese Funktion funktioniert.
Web-API-URL und Versionsverwaltung
Erstellen Sie die Web-API-URL mithilfe des Formats in der folgenden Tabelle.
Komponente | Beschreibung |
---|---|
Protokoll | https:// |
Basis-URL | <portal URL> |
Web-API-Pfad | _api |
Ressource | Logischer Name der Tabelle, die Sie verwenden möchten |
Verwenden Sie dieses Format beispielsweise, wenn Sie auf einen Fall verweisen:
https://contoso.powerappsportals.com/_api/case
Alle Web-API-Ressourcen folgen den jeweiligen Portaltabellenberechtigungen im Zusammenhang mit den Webrollen.
HTTP-Methoden
HTTP-Anforderungen können verschiedene Arten von Methoden verwenden. Die Portale-Web-API unterstützt jedoch nur die in der folgenden Tabelle aufgeführten Methoden:
Method | Verbrauch |
---|---|
Abrufen | Verwendung beim Abrufen von Daten aus Tabellen. |
Posten | Wird beim Erstellen von Datensätzen verwendet. |
Patch | Wird verwendet, wenn Tabellen aktualisiert werden oder Upsert-Vorgänge ausgeführt werden. |
Delete | Wird beim Löschen von Datensätzen oder einzelnen Feldwerten von Datensätzen verwendet. |
Put | Wird in bestimmten Fällen zur Aktualisierung einzelner Datensatzfelder verwendet. |
HTTP-Kopfzeilen
Die Web-API unterstützt nur JSON. Jeder HTTP-Header muss Folgendes enthalten:
- Ein Akzeptieren-Kopfzeilenwert von Anwendung/JSON, auch wenn kein Antworttext erwartet wird.
- Wenn die Anforderung JSON-Daten im Anforderungstext enthält, muss ein Content-Type-Header mit dem Wert
application/json
enthalten sein.
Die aktuelle OData-Version ist 4.0, aber zukünftige Versionen bieten eventuell die Möglichkeit, neue Funktionen zu verwenden. Verwenden Sie die folgende Syntax, um sicherzustellen, dass es keine Unklarheiten über die OData-Version gibt, die in Zukunft auf Ihren Code angewendet wird:
Syntax
Accept: application/json
OData-MaxVersion: 4.0
OData-Version: 4.0
Beispiel: Wrapper-AJAX-Funktion für das CSRF-Token
(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)
Beispiel: Tabellendaten abrufen
webapi.safeAjax({
type: "GET",
url: "/_api/contacts?$select=firstname,lastname",
contentType: "application/json",
success: function (res) {
console.log(res);
}
});
Beispiel: Tabellendaten erstellen
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"))
}
});
Beispiel: Tabellendaten aktualisieren
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);
}
});
Beispiel: Tabellendaten löschen
webapi.safeAjax({
type: "DELETE",
url: "/_api/accounts(00000000-0000-0000-0000-000000000001)",
contentType: "application/json",
success: function (res) {
console.log(res);
}
});
Ermitteln von Statuscodes
Jede HTTP-Anforderungsantwort enthält einen Statuscode. Zu den von der Portale-Web-API zurückgegebenen Statuscodes gehören die folgenden:
Code | Beschreibung | Typ |
---|---|---|
200 OK | Nehmen Sie diese Antwort an, wenn durch den Vorgang Daten im Antworttext zurückgegeben werden. | Erfolg |
204 Kein Inhalt | Nehmen Sie diese Antwort an, wenn der Vorgang erfolgreich durchgeführt wird, jedoch keine Daten im Antworttext zurückgegeben werden. | Erfolg |
403 – verboten | Nehmen Sie diese Antwort für die folgenden Fehlertypen an:
|
Client-Fehler |
401 – nicht autorisiert | Nehmen Sie diese Antwort für die folgenden Fehlertypen an:
|
Client-Fehler |
413 Nutzlast zu groß | Nehmen Sie die Antwort an, wenn die Anforderung zu lang ist. | Client-Fehler |
400 BadRequest | Nehmen Sie diese Antwort an, wenn ein Argument ungültig ist. InvalidAttribute |
Client-Fehler |
404 Seite nicht gefunden | Nehmen Sie diese Antwort an, wenn die Ressource nicht vorhanden ist. Die Tabelle ist nicht für die Web-API verfügbar. |
Client-Fehler |
405 Methode nicht erlaubt | Dieser Fehler tritt für falsche Methoden und Ressourcenkombinationen auf. Beispielsweise können Sie weder DELETE noch PATCH bei einer Sammlung von Tabellen verwenden. Diese Situation kann bei folgenden Fehlertypen auftreten:
|
Client-Fehler |
501 Nicht implementiert | Nehmen Sie diese Antwort an, wenn ein angeforderter Vorgang nicht implementiert wird. | Serverfehler |
503 – Dienst ist nicht verfügbar | Nehmen Sie diese Antwort an, wenn der Web-API-Service nicht verfügbar ist. | Serverfehler |
Analysefehler von der Antwort
Betrachten Sie die folgende Beispiel-HTTP-Antwort, die noch den inneren Fehler enthält:
{
"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.."
}
}
}
Fehlercodes
Fehlercodes werden für alle behandelten Szenarien im Hexadezimalformat angezeigt. In der folgenden Tabelle sind alle Fehlercodes mit ihren jeweiligen Namen und Meldungen aufgeführt.
Fehlercode | Fehlername | Fehlermeldung |
---|---|---|
900400FF | NoAttributesForTableCreate | Keine Attribute zur Aktion „Tabelle erstellen“. |
90040100 | InvalidAttribute | Die Attribut {0} wurde in der Tabelle {1} nicht gefunden. |
90040101 | AttributePermissionIsMissing | Das Attribut {0} in der Tabelle {1} ist für die Web-API nicht aktiviert. |
90040102 | TablePermissionWriteIsMissingDuringUpdate | Sie besitzen keine Berechtigung zum Aktualisieren der Entität {0}. |
90040103 | TablePermissionCreateIsMissing | Sie besitzen keine Berechtigung zum Erstellen der Entität {0}. |
90040104 | TablePermissionDeleteIsMissing | Sie besitzen keine Berechtigung zum Löschen der Entität {0). |
90040105 | TablePermissionAppendIsMissngDuringAssociationChange | Sie sind nicht berechtigt, die Tabelle {0} {1} zuzuordnen oder die Zuordnung aufzuheben. |
90040106 | TablePermissionAppendToIsMissingDuringAssociationChange | Sie sind nicht berechtigt, die Tabelle {1} {0} zuzuordnen oder die Zuordnung aufzuheben. |
90040107 | HttpAntiForgeryException | Das Anti-Fälschungs-Cookie-Token und das Formularfeld-Token stimmen nicht überein. |
90040109 | MissingPortalSessionCookie | Ein ungültiges Sitzungstoken wurde an die auslösende Methode übergeben. |
9004010C | ResourceDoesNotExists | Die Ressource wurde für das Segment ‚{0}‘ nicht gefunden. |
9004010D | CDSError | CDS-Fehler |
Die Antwort auf nicht behandelte Fehler mit dem HTTP-Statuscode 500 gibt den Fehler „Bei der Verarbeitung der Anforderung ist ein unerwarteter Fehler aufgetreten“ zurück.
Siehe auch
Übersicht über Web-API für Portale
Portale Schreib-, Aktualisierungs- und Löschvorgänge über die Web-API
Portale Lesevorgänge über die Web-API
Hinweis
Können Sie uns Ihre Präferenzen für die Dokumentationssprache mitteilen? Nehmen Sie an einer kurzen Umfrage teil. (Beachten Sie, dass diese Umfrage auf Englisch ist.)
Die Umfrage dauert etwa sieben Minuten. Es werden keine personenbezogenen Daten erhoben. (Datenschutzbestimmungen).