Comparteix a través de


Redacció de sol·licituds HTTP i gestió d'errors per a l'API web del portals

Nota

Des del 12 d'octubre de 2022, els portals del Power Apps són Power Pages. Més informació: Microsoft Power Pages ara està disponible de manera general (bloc)
Ben aviat migrarem i combinarem la documentació dels portals del Power Apps amb la documentació del Power Pages.

La interacció amb l'API web inclou la composició de sol·licituds HTTP amb les capçaleres necessàries i la gestió de respostes HTTP, incloent-hi els errors.

Important

  • La versió del portal ha de ser 9.3.3.x o posterior per poder treballar amb aquesta característica.

URL i versions de l'API web

La construcció de l'adreça URL de l'API web mitjançant el format a la taula següent.

Part Descripció
Protocol https://
Adreça URL base <portal URL>
Camí de l'API web _api
Recurs Nom lògic de la taula que voleu utilitzar

Per exemple, utilitzeu aquest format en fer referència a un cas:

https://contoso.powerappsportals.com/_api/case

Tots els recursos de l'API web seguiran els permisos de taula del portal respectius en el context amb funcions web.

Mètodes HTTP

Les sol·licituds HTTP poden utilitzar mètodes de diversos tipus. No obstant, l'API web dels portals només admet els mètodes de la taula següent:

Mètode Ús
Obtén el Yammer Utilitzeu-ho en recuperar dades de les taules.
Post Utilitzeu-lo quan creeu registres.
Patch Utilitzeu-ho quan actualitzeu taules o feu operacions upsert.
Delete Utilitzeu-lo quan suprimiu registres o valors de camp individuals dels registres.
Put Utilitzeu-lo en situacions limitades per actualitzar camps de registres individuals.

Capçaleres HTTP

L'API web només admet JSON. Cada capçalera HTTP ha d'incloure:

  • Un valor de capçalera d'Acceptació d' aplicació/JSON, encara que no es tingui previst cap òrgan de resposta.
  • Si la sol·licitud inclou dades JSON al cos de la sol·licitud, heu d'incloure una capçalera Content-Type amb un valor application/json.

La versió actual d'OData és la 4.0, però les futures versions podrien permetre noves capacitats. Utilitzeu la sintaxi següent per assegurar-vos que no hi hagi cap ambigüitat sobre la versió OData que s'aplicarà al codi en el futur:

Sintaxi

Accept: application/json  
OData-MaxVersion: 4.0  
OData-Version: 4.0

Exemple: funció Wrapper AJAX per al testimoni CSRF

    (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)

Exemple: recuperar dades de taula

    webapi.safeAjax({
                type: "GET",
                url: "/_api/contacts?$select=firstname,lastname",
                contentType: "application/json",
                success: function (res) {
                        console.log(res);
                }
    });

Exemple: crear dades de taula

    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"))
        }
    });

Exemple: actualitzar dades de taula

        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);
        }
    });

Exemple: suprimir dades de taula

        webapi.safeAjax({
        type: "DELETE",
        url: "/_api/accounts(00000000-0000-0000-0000-000000000001)",
        contentType: "application/json",
        success: function (res) {
            console.log(res);
        }
    });

Identificar els codis d'estat

Cada sol·licitud HTTP a la resposta inclou un codi d'estat. Els codis d'estat retornats per l'API web dels portals són els següents:

Codi Descripció Type
200 OK Espereu aquesta resposta si l'operació retornarà dades al cos de resposta. Correctes
204 No Content Espereu aquesta resposta si l'operació és correcta però no retornarà dades al cos de resposta. Correctes
403 Prohibit Espereu aquesta resposta per als tipus d'errors següents:
  • AccessDenied
  • AttributePermissionIsMissing
  • TablePermissionWriteIsMissingDuringUpdate
  • TablePermissionCreateIsMissing
  • TablePermissionDeleteIsMissing
  • TablePermissionAppendIsMissngDuringAssociationChange
  • TablePermissionAppendToIsMissingDuringAssociateChange
Error del client
401 No autoritzat Espereu aquesta resposta per als tipus d'errors següents:
  • MissingPortalRequestVerificationToken
  • MissingPortalSessionCookie
Error del client
413 Payload Too Large Espereu aquesta resposta quan la longitud de la sol·licitud és massa gran. Error del client
400 BadRequest Espereu aquesta resposta quan un argument no és vàlid.
InvalidAttribute
Error del client
404 Not Found Espereu aquesta resposta quan el recurs no existeixi.
La taula no està exposada a l'API web.
Error del client
405 Method Not Allowed Aquest error es produeix per a combinacions incorrectes de mètodes i recursos. Per exemple, no podeu utilitzar DELETE o PATCH en una col·lecció de taules. Aquest situació pot ocórrer per als tipus d'errors següents:
  • InvalidOperation
  • NotSupported
Error del client
501 Not Implemented Espereu aquesta resposta quan algunes operacions sol·licitades no estan implementades. Error del servidor
503 Servei no disponible Espereu aquesta resposta quan el servei de l'API web no estigui disponible. Error del servidor

Analitzar els errors de la resposta

Tingueu en compte la següent resposta d'HTTP d'exemple, la qual encara inclou l'error intern:

{
  "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.."
      }
    }
  }

Codis d'error

Els codis d'error es mostren en format hexadecimal per a tots els escenaris gestionats. A la taula següent s'enumera cada codi d'error amb el seu nom i el seu missatge respectiu.

Codi d'error Nom de l'error Missatge d'error
900400FF NoAttributesForTableCreate No hi ha atributs per l’acció de creació de taula.
90040100 InvalidAttribute No s’ha trobat l’atribut {0} per a la taula {1}.
90040101 AttributePermissionIsMissing L’atribut {0} de la taula {1} no està habilitat per a l’API web.
90040102 TablePermissionWriteIsMissingDuringUpdate No teniu permís per actualitzar l'entitat {0}.
90040103 TablePermissionCreateIsMissing No teniu permís per crear l'entitat {0}.
90040104 TablePermissionDeleteIsMissing No teniu permís per suprimir l'entitat {0).
90040105 TablePermissionAppendIsMissngDuringAssociationChange No teniu permís per associar o dissociar la taula {0} amb {1}.
90040106 TablePermissionAppendToIsMissingDuringAssociationChange No teniu permís per associar o dissociar la taula {1} a {0}.
90040107 HttpAntiForgeryException El testimoni de la galeta antifalsificació i el testimoni del camp de formulari no coincideixen.
90040109 MissingPortalSessionCookie S'ha passat un testimoni de sessió no vàlid al mètode de llançament.
9004010C ResourceDoesNotExists No s'ha trobat el recurs per al segment "{0}".
9004010D CDSError S'ha produït un error de CDS.

La resposta dels errors no gestionats amb el codi d'estat HTTP 500 retornarà l'error: "S'ha produït un error inesperat mentre es processava la sol·licitud".

Consulteu també

Informació general sobre l'API web de portals
Operacions d'escriptura, actualització i supressió al Portals amb l'API web
Operacions de lectura en portals mitjançant l'API web

Nota

Ens podeu dir quines són les vostres preferències d'idioma per a la documentació? Responeu una breu enquesta. (tingueu en compte que l'idioma de l'enquesta és l'anglès)

Trigareu uns set minuts a completar l'enquesta. No es recopilen dades personals (declaració de privadesa).