2016-08-02 16 views
0

Ich arbeite mit einem neuen System und Aufbau der Fehler Verträge, die ich zurückgeben werde. Ich versuche der OData v4 Error Response structure zu folgen.Can OData Error Objekte enthalten willkürliche Eigenschaften

Da dies ein C# -Dienst ist, scheint es eine sehr gute Zuordnung zwischen Exception-Objekten und OData-Fehlerantwort zu geben. Wir versuchen jedoch festzustellen, ob ein Fehlerantwortobjekt weitere willkürliche Eigenschaften enthalten kann. Innen Fehler werden zusätzliche Eigenschaften haben ausdrücklich erklärt erlaubt als so folgendes gilt:

{ 
    "error": { 
    "code": "BadArgument", 
    "message": "Previous passwords may not be reused", 
    "target": "password", 
    "innererror": { 
     "code": "PasswordDoesNotMeetPolicy", 
     "minLength": "6", 
     "maxLength": "64", 
     "minDistinctCharacterTypes": "2", 
    } 
    } 
} 

Die Data Eigenschaft auf eine Ausnahme bildet sehr gut dazu, und wir können nur jeden Wert auf die innere Ausnahme in eine umwandeln Eigenschaft auf dem Fehler. Wenn also ein Client der äußeren Ausnahme beliebige Eigenschaften hinzufügt, ist es in Ordnung, sie als Eigenschaften im Stammverzeichnis verfügbar zu machen. Zum Beispiel:

{ 
    "error": { 
    "code": "BadArgument", 
    "message": "PasswordDoesNotMeetPolicy", 
    "target": "password", 
    "minLength": "6", 
    "maxLength": "64", 
    "minDistinctCharacterTypes": "2", 
    } 
} 

Oder wird so etwas allgemein als "schlechte Form" für OData angesehen?

Antwort

0

Wenn Sie benutzerdefinierte Eigenschaften direkt auf dem Objekt error hinzufügen, haben Sie eine nicht standardmäßige Fehlerreaktion. Code-Generierungs-Tools und Drittanbieter-Clients erkennen die benutzerdefinierten Eigenschaften nicht.

Die innererror-Eigenschaft ist ein Erweiterungspunkt. Die spec says: "Der Inhalt dieses Objekts sind Service-definiert. In der Regel enthält dieses Objekt Informationen, mit denen Sie den Dienst debuggen." Stick mit innererror.

Verwandte Themen