Spray Routing: Wie reagiert man mit verschiedenen Content-Typen?

8

In spray möchte ich mit verschiedenen Inhaltstypen antworten, abhängig vom angegebenen Accept Header. Ich habe ein paar Vorschläge in der Frage von rompetroll , aber ich würde gerne hören, ob es einen kanonischen Weg gibt (dh einfach oder bereits implementiert).

Im Wesentlichen, was ich mir vorstellen kann, ist etwas wie:

%Vor%

Vielen Dank im Voraus.

    
Jens Egholm 14.01.2014, 16:22
quelle

2 Antworten

8

Spray untersucht tatsächlich den Headerwert Accept und validiert dagegen. Wenn also route application/json oder text/plain zurückgibt und client image/jpeg akzeptiert, wird spray 406 Not Acceptable zurückgeben. Wenn der Client application/json oder text/plain von dieser Route anfordert, erhält er eine Antwort mit passendem Content-Type.

Der Haupttrick besteht darin, korrekte Marshaller für Rückgabeobjekte zu verwenden. Weitere Informationen zum Marshalling finden Sie hier .

Sie können MediaType auch mit der respondWithMediaType -Direktive überschreiben , aber ich denke, es ist besser, richtige Marshaller zu verwenden.

    
vitalii 14.01.2014, 17:48
quelle
15

Siehe die Tests in diesem Commit .

Ich habe es hier als Referenz kopiert:

%Vor%

Wenn Sie dann complete in Ihrer Route verwenden, wird automatisch auf die Aushandlung des Inhaltstyps geachtet:

%Vor%     
jrudolph 15.01.2014 09:20
quelle