Es scheint keinen Standard zu geben.
Die StackOverflow- Antwort tendiert zu 410 GONE, aber ich denke, 301 MOVED PERMANENTLY ist angemessener.
Um die richtige Wahl zu treffen, müssen wir uns Ihren speziellen Fall ansehen. Wenn Ihr Ziel ist, dass alle Aufrufe an API v1 fehlschlagen, ohne dass weitere Maßnahmen ergriffen werden, funktioniert 410 GONE dafür. Wenn Sie eine gewisse Kontinuität wünschen, z. B. das Umleiten des Clients auf eine neuere Version Ihrer API, bei der der Aufruf möglicherweise erfolgreich ist, funktioniert 3XX. Aber welche wählen Sie aus? Ich denke, wenn Sie versuchen, API v1 herunterzufahren, hilft 301 MOVMANENTLY, anzuzeigen, dass besser als 303 SEE OTHER ist, da 301 vorschlägt, dass alle zukünftigen Anforderungen an die neue URL gesendet werden sollten, während 303 nicht angibt, ob dies der Fall ist oder nicht permanent.
Ich würde empfehlen, die API so zu entwickeln, dass jede Version abwärtskompatibel bleibt, damit 301 MOVED PERMANENTLY Ihre API transparent am Leben erhält und auf dem neuesten Stand bleibt, wenn Sie neue Endpunkte für neue API-Versionen hinzufügen. Ich denke, das ist es, was Sie sowieso versuchen.
HTTP-Statuscodes
Der HTTP-Statuscode 302 war ursprünglich zu weit gefasst und wurde daher falsch implementiert / verwendet. Daher wurden 303 und 307 erstellt, um zwischen dem doppelten Verwendungszweck von 302 zu unterscheiden. Einige APIs verwenden 303 für andere Zwecke.
301 Permanent verschoben - Der Statuscode 301 (Permanent verschoben) gibt an, dass der Zielressource ein neuer permanenter URI zugewiesen wurde und zukünftige Verweise auf diese Ressource einen der beigefügten URIs verwenden sollten.
302 GEFUNDEN - Der Statuscode 302 (Gefunden) gibt an, dass sich die Zielressource vorübergehend unter einem anderen URI befindet. Da die Umleitung gelegentlich geändert werden kann, sollte der Client die effektive Anforderungs-URI für zukünftige Anforderungen weiterhin verwenden.
303 SIEHE ANDERE - Eine 303 Antwort auf eine GET-Anforderung zeigt an, dass der Ursprungsserver keine Darstellung der Zielressource hat, die vom Server über HTTP übertragen werden kann. Der Wert im Feld "Standort" bezieht sich jedoch auf eine Ressource, die die Zielressource beschreibt, sodass eine Abrufanforderung für diese andere Ressource möglicherweise zu einer Darstellung führt, die für die Empfänger nützlich ist, ohne zu implizieren, dass sie die ursprüngliche Zielressource darstellt.
410 GONE - Der Statuscode 410 (Gone) gibt an, dass der Zugriff auf die Zielressource auf dem Ursprungsserver nicht mehr verfügbar ist und dass dieser Zustand wahrscheinlich dauerhaft ist. Wenn der Ursprungsserver nicht weiß oder nicht feststellen kann, ob die Bedingung dauerhaft ist oder nicht, sollte stattdessen der Statuscode 404 (Not Found) verwendet werden.
Wie gehen vorhandene APIs damit um?
Vielleicht können Sie eine Seite aus Googles Youtube-API entnehmen :
Wenn eine API-Anfrage fehlschlägt, gibt YouTube einen HTTP 4xx- oder 5xx-Antwortcode zurück, der den Fehler generisch identifiziert, sowie eine XML-Antwort, die spezifischere Informationen zu den Fehlern enthält, die den Fehler verursacht haben. Für jeden Fehler enthält die XML-Antwort ein Domänenelement, ein Codeelement und möglicherweise ein Standortelement.
Weitere Lektüre: