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.
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.
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:
Tags und Links scala routing http-headers spray http-accept-header