Ich habe eine Client-App, die über REST-Dienste mit einem Server kommuniziert. Die Client-App ist mehrsprachig. Dies bedeutet, dass der Server das Gebietsschema des Benutzers während der Anrufe kennen muss. Ich möchte den "post for location" -Ansatz verwenden, da dies ein schönes und erholsames Gefühl hat. Wenn Daten veröffentlicht werden, um die Aktionsressource zu sagen, lautet die URL:
%Vor%Die Sprache ist wichtig, damit ich Fehlermeldungen (oder manchmal die zurückkehrenden Daten) für ein GET lokalisieren kann. Jetzt, wenn der Server antwortet, muss er den URI der Ressource zurücksenden. Wenn ich zurückschicke
%Vor%wobei ID die ID der neu erstellten Ressource ist, ist dies nicht ganz korrekt wie
%Vor%wäre der URI der lokalisierten Ressource. Die eigentliche Ressource ist jedoch ohne den Sprachkontext.
Gibt es Meinungen zu Best Practices für dieses Szenario?
Ich bin nicht überzeugt, dass die Sprache Teil der "Adresse" sein sollte, die Sache, die die Ressource identifiziert, es sei denn, sie ist Teil der Identität und die Spannung, die Sie zwischen
haben %Vor%und
%Vor%zeigt, dass etwas nicht stimmt.
Ein alternativer Ansatz besteht darin, die Locale-Informationen des HTTP-Headers zu verwenden, um die Sprache zu übergeben. Ein anderes wäre, die Sprache als Abfrageparameter zu übergeben, es ist ein Modifizierer der Anfrage.
Konnte nicht finden, wie man kommentiert, aber ich werde mit djna Antwort gehen. Ich wollte nur etwas hinzufügen:
Ich bin kein REST-Experte, aber aus meiner Sicht wird die Abfrage die perfekte Lösung sein UND auch das HTTP-Header-Gebietsschema unterstützen.
Beispiel, wenn HTTP-Header gesendet wird, verwenden Sie das. Wenn der Abfrageparameter lang gesendet wird, überschreiben Sie den HTTP-Header.
So bekommen Sie:
%Vor%Sie können auch eine Standardsprache angeben, die nicht streng zu einer ist (aber ich denke, es ist am besten zu sagen, Englisch, wenn nicht angegeben), aber Sie können den GEO-Speicherort abrufen, um die Informationen in der Sprache des Clients anzuzeigen wähle keine aus.
Das Akzeptieren des HTTP-Headers geht noch einen Schritt weiter und gibt dem Client Optionen. Es ist viel einfacher, einen HTTP-Header zu konfigurieren, als jede Anfrage-URL mit Sprache im Client zu bearbeiten.
Hoffe es hilft: D