Ich entwerfe eine RESTful-API und versuche, beschreibend zu sein und die Dokumentation übersichtlicher zu gestalten. Ich möchte meinen Content-Type-HTTP-Header wie folgt deklarieren:
%Vor%Dabei ist mycorp eine eindeutige ID für meine Corporation und mydatatype ist für jeden Datentyp eindeutig. Ein Beispiel wäre:
%Vor%Dieser Inhaltstyp ist erforderlich, damit ein POST gültig ist und als Teil einer Antwort gesendet wird. Es scheint mir eine nette Art zu sein, Regeln dafür zu definieren, was innerhalb der Payload sein soll.
Ich kann keine gute Quelle finden, ob dies eine gute Idee ist oder ob es sogar von IETF-Standards erlaubt ist.
Also, Frage ist: Was ist machbarer, Anwendung / vnd.mycorp.mydatatype + json oder nur Anwendung / json?
Es ist definitiv erlaubt. Ob es eine gute Idee ist, ist eine andere Geschichte.
Meine Faustregel ist, dass es sich um ein primäres Datenformat handelt, das in vielen Bereichen nützlich ist, dass es selbst identifiziert werden muss und dass Sie über viele Anwendungen hinweg arbeiten müssen, geben Sie ihm definitiv einen Medientyp.
Wenn es jedoch nur eine Nachricht in Ihrer API unter vielen gibt und diese nur für eine Ressource (oder einen Ressourcentyp) geeignet ist, verwenden Sie einfach die Anwendung / json.
YMMV, natürlich.
Die Frage hängt stark mit Ihrer REST-API Versionierung zusammen.
Der Inhaltstyp wird verwendet, um den Typ des Inhalts zu definieren. Wenn Sie einen Standard Inhaltstyp wie
verwenden %Vor%Sie sagen dem Client, dass die Nachricht im JSON-Format vorliegt. Dies ist genug für alle Webanwendungen, die ihre API nicht versionieren oder nur die neueste Version unterstützen. Wenn Clients unterschiedliche Versionen Ihrer API verwenden sollen, reichen die standard Inhaltstypen nicht aus. Stellen Sie sich das folgende Szenario vor:
Nehmen Sie Ihr Beispiel als Version 1 der Nachricht
%Vor%Irgendwann entscheiden Sie, dass Sie die Farbe mit Hexadezimalcode darstellen möchten. Daher erstellen Sie Version 2 des Typs
%Vor%Wenn der Kunde nach einem Auto fragt, gibt er den richtigen Inhaltstyp an, der die Version enthält. Dies teilt der Anwendung mit, ob die Farbe als Hex-Code oder als Name gesendet werden soll.
Hier versionieren Sie die Darstellung einer Ressource. Eine Alternative zur Unterstützung der Ressourcenrepräsentation ist das Hinzufügen der Version als benutzerdefinierten Header (unter Beibehaltung des Content-Type-Standards)
%Vor%Tags und Links http http-headers