18. März 2025 17:23
Bei mir ist in der URL /ODataV4/ vorhanden. Im Webdienst lege ich fest, welche Codeunit oder Page für die API verwendet wird. Ich habe eine Page ausgewählt, die beispielsweise nur ein Feld mit einer Länge von 80 Zeichen hat. Wenn ich ein POST mit einem JSON-String ausführe, der länger als 80 Zeichen ist, erhalte ich eine vom System generierte Fehlermeldung im Response-Body:
- Code:
{
"error": {
"code": "Application_StringExceededLength",
"message": "Die Länge der Zeichenfolge beträgt 172, darf aber höchstens 80 Zeichen umfassen. Wert: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa CorrelationId: b60dc3fe-705f-4c7d-a00b-26185da53ea2."
}
}
Ich muss nicht alles manuell entwickeln, um solche Fehler abzufangen, da das System bereits ein eigenes Error-Handling hat. Wenn ich jedoch eine eigene Validierung programmieren möchte, z. B. eine Tabelle abfragen und bestimmte Prüfungen durchführen, kann dies dazu führen, dass die Dauer des Calls steigt (sollte unter 200 ms liegen). Der Grund dafür ist, dass auf eine Antwort gewartet wird (TCP als Transport für HTTP/1.1 und /2). Ich war unsicher, wie ich mit einem Call umgehen soll, der etwa 830 ms gedauert hat. Dann ist mir eingefallen: Warum nicht einfach den Body der Response entfernen und nur den Body zulassen, der einen Fehler enthält? Dies lässt sich im Header "Prefer" mit dem Wert "return-no-content" erreichen. Jetzt dauert der Call nur noch 30 ms, was gut ist.