2016-03-24 6 views
1

Welche HTTP-Header sollte ich für die Angabe stilistischen Eigenschaften einer HTTP-Antwort verwenden, speziell den Fall der Schlüssel in einem JSON-Objekt? Ein Hinweis: Ich entwickle eine REST-API, bei der Kunden einen erwarteten Fall angeben sollen, z. B. camelCase oder snake_case.HTTP-Header für die Anzeige erforderlichen stilistische Eigenschaft für den Antworttext

Wenn camelCase spezifiziert eine Antwort aussehen würde:

{ 
    "peopleUrl": "…", 
    "postsUrl": "…" 
} 

Wenn snake_case spezifiziert eine Antwort aussehen würde:

{ 
    "people_url": "…", 
    "posts_url": "…" 
} 

Die Header Ich habe an sind Expect suchen und Prefer . Expect wird beschrieben als Pflicht Konfigurationen ein Server mit oder Fehler entsprechen müssen, und Prefer als optionale Konfigurationen beschrieben. Die spezifische Syntax betrachtete ich ist:

Expect: case=camel 

oder:

Prefer: case=camel 

Derzeit fühle ich mich wie Expect ist die beste, weil es die Konfiguration erfordert. Während jedoch in RFC 2616 ein Erweiterungsmechanismus für Expect vorgesehen ist, jedoch in RFC 7231 diese Erweiterung Mechanismus wurde entfernt, und nur das 100-continue Feld (auf der nächsten Seite blättern die Notiz die Options- zu sehen) erlaubt. Der Prefer Header wurde in RFC 7240 angegeben und hat erscheinen einen Erweiterungsmechanismus zu haben.

Welche Header ist am besten für diese Konfigurationsoption? Sehe ich mit Expect und Prefer in die falsche Richtung?

+0

_ "Ich möchte, dass Kunden einen erwarteten Fall liefern" _ - ** warum? ** Dokumentieren Sie nur ein Gehäuse und lassen Sie Ihre Kunden dabei bleiben ...Wie Sie in RFC 7240 lesen können, müssen Sie 'Prefer' Erweiterungen mit IANA registrieren. – CodeCaster

+0

Wenn Sie eine API haben, die Daten an mehrere verschiedene Plattformen liefern muss, ist es hilfreich, dass sie das gewünschte Format auswählen können. Ein JS-Client möchte möglicherweise 'camelCase', während ein PHP-Client' snake_case' möchte. Auch wenn dies eine schlechte Idee ist, ist das Finden eines geeigneten Headers immer noch eine gültige Frage. – Calebmer

+0

Sie sind der Dienstleister, Sie bestimmen das Format. Ich sage nicht, dass es eine ungültige Frage ist, nur eine dumme Frage. Vergiss nicht den Overhead, der auf deiner Seite verursacht wird. Jedenfalls gibt es keine vorhandene Kopfzeile, die Sie dafür nutzen können. – CodeCaster

Antwort

1

Da einige der Kommentare zeigen, gibt es wahrscheinlich keine vorhandenen HTTP-Header-Name ist, in dem HTTP-RFCs definiert, die Ihren Anwendungsfall abdecken würden/handhaben. Die Verwendung von Expect oder Prefer mit wohldefinierten Semantiken, die Ihre Bedürfnisse nicht ganz abdecken, kann zu mehr Schmerzen/Frustration führen, als Sie möchten; Diese Header werden möglicherweise von vorhandenen Clients, Servern und Proxys auf eine Weise behandelt, die Sie nicht möchten/erwarten.

Das heißt, es gibt nichts, was man verhindern, dass für Anfragen Ihre eigenen X- Header mit und Antworten, z.B.X-JSON-KeyStyle:

GET /path/to/resource HTTP/1.1 
Host: ... 
X-JSON-KeyStyle: camel 
... 

Und dann würde Ihre Antwort den Stil in den zurückgegebenen Daten verwendet zeigen:

HTTP1/1 200 OK 
... 
X-JSON-KeyStyle: camel 
... 

Durch Spezifikation werden für absichtlich kein Header-Namen mit X- voran nicht behandelt/bedeckt, und sind verwendet solche wie. Bei diesem Ansatz müssen Sie lediglich Ihren benutzerdefinierten HTTP-Header für die Verwendung durch Clients Ihrer REST-API dokumentieren.

Hoffe, das hilft!