Oharra
Baimena behar duzu orria atzitzeko. Direktorioetan saioa has dezakezu edo haiek alda ditzakezu.
Baimena behar duzu orria atzitzeko. Direktorioak alda ditzakezu.
Web APIarekin elkarreragiteak HTTP eskaerak goiburuekin konposatzea eta HTTP erantzunak maneiatzea dakartza, akatsak barne.
Garrantzitsua da
- Zure atariaren bertsioa 9.3.3.x edo berriagoa izan behar da funtzio hau funtziona dezan.
Web APIaren URLa eta bertsioa
Eraiki Web APIaren URLa hurrengo taulako formatua erabiliz.
| Zatia | Deskribapenak |
|---|---|
| Protokoloa | https:// |
| Oinarrizko URLa | <atariaren URLa> |
| Web APIaren bidea | _api |
| Baliabidea | Erabili nahi duzun taularen izen logikoa |
Adibidez, erabili formatu hau kasua aipatzean:
https://contoso.powerappsportals.com/_api/case
Web-APIaren baliabide guztiek dagozkien taula-baimenei jarraituko diete web-rolekin testuinguruan.
HTTP metodoak
HTTP eskaerak hainbat metodo mota erabil ditzake. Hala ere, atarien Web-APIak taula honetako metodoak soilik onartzen ditu:
| Metodoa | Erabilera |
|---|---|
| Eskuratu | Erabili tauletatik datuak berreskuratzean. |
| Argitaratu | Erabili erregistroak sortzean. |
| Adabakia | Erabili taulak eguneratzerakoan edo goranzko eragiketak egitean. |
| Ezabatu | Erabili erregistroak edo erregistroen eremu indibidualaren balioak ezabatzean. |
| Jarri | Erabili egoera mugatuetan erregistroen eremuak eguneratzeko. |
HTTP goiburuak
Web APIak JSON soilik onartzen du. HTTP goiburu bakoitzak honako hauek izan behar ditu:
- Onartu goiburuaren balioa aplikazioa/json, erantzun-organorik espero ez denean ere.
- Eskaerak JSON datuak biltzen baditu eskaera-organoan, Eduki mota goiburua balioa duen
application/json.
Egungo OData bertsioa 4.0 da, baina etorkizuneko bertsioek gaitasun berriak ahalbidetu ditzakete. Erabili sintaxia hau etorkizunean zure kodeari aplikatuko den OData bertsioari buruzko anbiguotasunik ez dagoela ziurtatzeko:
Sintaxia
Accept: application/json
OData-MaxVersion: 4.0
OData-Version: 4.0
Adibidez: CSRF tokenarentzako Wrapper AJAX funtzioa
(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)
Adibidez: berreskuratu taulako datuak
webapi.safeAjax({
type: "GET",
url: "/_api/contacts?$select=firstname,lastname",
contentType: "application/json",
success: function (res) {
console.log(res);
}
});
Adibidez: sortu taulako datuak
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"))
}
});
Adibidez: eguneratu taulako datuak
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);
}
});
Adibidez: ezabatu taulako datuak
webapi.safeAjax({
type: "DELETE",
url: "/_api/accounts(00000000-0000-0000-0000-000000000001)",
contentType: "application/json",
success: function (res) {
console.log(res);
}
});
Identifikatu egoera-kodeak
HTTP eskaera erantzun bakoitzean egoera kodea sartzen da. Atarien Web-APIak itzultzen dituen egoera-kodeak honako hauek dira:
| Kodea | Deskribapenak | Idatzi |
|---|---|---|
| 200 Ados | Espero erantzun hau zure eragiketak datuak erantzun-gorputzean itzuliko dituenean. | Behar bezala gauzatu da |
| 204 Edukirik ez | Espero erantzun hau zure eragiketak arrakasta duenean, baina ez dituenean itzultzen datuak erantzun-gorputzean. | Behar bezala gauzatu da |
| 403 Debekatuta | Espero erantzun hau hurrengo akats motengatik:
|
Bezero-errorea |
| 401 Baimenik gabe | Espero erantzun hau hurrengo akats motengatik:
|
Bezero-errorea |
| 413 Karga handiegia da | Espero erantzun hau eskaeraren luzera handiegia denean. | Bezero-errorea |
| 400 BadRequest | Espero erantzun hau argumentua baliogabea denean. InvalidAttribute |
Bezero-errorea |
| 404 Ez da aurkitu | Espero erantzun hau baliabidea ez dagoenean. Web APIrako taula ez dago jasota. |
Bezero-errorea |
| 405 Ez da onartzen metodoa | Errore hau metodo eta baliabide konbinazio okerretan gertatzen da. Adibidez, ezin duzu EZABATU edo ADABATU taula bilduma batean erabili. Egoera hori gerta daiteke hurrengo errore motetarako:
|
Bezero-errorea |
| 501 Inplementatu gabe | Espero erantzun hau eskatutako eragiketaren bat gauzatzen ez denean. | Zerbitzariaren errorea |
| 503 Zerbitzua ez dago erabilgarri | Espero erantzun hau web API zerbitzua ez dagoenean. | Zerbitzariaren errorea |
Erantzunetik akatsak analizatu
Kontuan izan oraindik barneko errorea barne hartzen duen HTTP erantzun-adibide hau:
{
"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.."
}
}
}
Errore-kodeak
Errore kodeak formatu hexadekimalan bistaratzen dira kudeatutako eszenatoki guztietan. Ondorengo taulan errore-kode bakoitza dagokion izenarekin eta mezuarekin zerrendatzen da.
| Errore kodea | Errorearen izena | Errore mezua |
|---|---|---|
| 900400FF | NoAttributesForTableCreate | Ez dago atributurik taula sortu ahal izateko. |
| 90040100 | InvalidAttribute | {0} atributua ez dago {1} taulan. |
| 90040101 | AttributePermissionIsMissing | {1} taulako {0} atributua ez dago gaituta webeko APIan. |
| 90040102 | TablePermissionWriteIsMissingDuringUpdate | Ez duzu baimenik {0} entitatea eguneratzeko. |
| 90040103 | TablePermissionCreateIsMissing | Ez duzu baimenik {0} entitatea sortzeko. |
| 90040104 | TablePermissionDeleteIsMissing | Ez duzu baimenik ezabatzeko {0) entitatea. |
| 90040105 | TablePermissionAppendIsMissngDuringAssociationChange | Ez duzu baimenik {0} taula {1} atributuarekin lotzeko edo hartatik bereizteko. |
| 90040106 | TablePermissionAppendToIsMissingDuringAssociationChange | Ez duzu baimenik {1} taula {0} atributuari lotzeko edo hartatik bereizteko |
| 90040107 | HttpAntiForgeryException | Ez dira bat datozen faltsutzeen aurkako token eta inprimaki eremuaren tokenak. |
| 90040109 | MissingPortalSessionCookie | Saio baliogabearen token bat bota metodoan sartu zen. |
| 9004010C | ResourceDoesNotExists | Baliabideak ez dira aurkitu segmentuarentzat '{0}'. |
| 9004010D | CDSError | CDS errore bat gertatu da. |
HTTP egoera 500 kodea duten erantzunik gabeko akatsen erantzunak akatsa itzuliko du "Espero ez den errorea gertatu da eskaera prozesatzean."