Comment puis-je spécifier spray Type de Contenu d'en-tête de réponse?
Je comprends que le jet n'est que pour moi, mais j'ai encore envie de l'écraser avec mon en-tête, comment puis-je remplacer la tête dans la réponse?
Ma réponse ressemble à ceci:
case HttpRequest(GET, Uri.Path("/something"), _, _, _) =>
sender ! HttpResponse(entity = """{ "key": "value" }""" //here i want to specify also response header i would like to explicitly set it and not get it implicitly
Qui de pulvérisation version est qui?
OriginalL'auteur Jas | 2013-10-16
Vous devez vous connecter pour publier un commentaire.
Si vous voulez toujours utiliser un aérosol peut, alors vous avez deux options, selon que HttpResponse est une affaire de classe. La première est de passer d'une Liste explicite de type de contenu:
Ou, la deuxième méthode est d'utiliser une méthode
withHeaders
méthode:Mais encore, comme jrudolph dit, il est beaucoup mieux d'utiliser un aérosol de routage, dans ce cas, il serait mieux:
Mais pulvérisation rend encore plus facile et gère tous les (dé)sérialisation pour vous:
Dans ce cas reponse type sera mis à
application/json
par le jet lui-même.Exemple complet pour mon commentaire:
not found: value runRoute def receive = runRoute { ^
pour l'avoir vous devez
extend Actor with HttpService
ou tout simplementextends HttpServiceActor
de pulvérisation de routage de paquetdans le dernier exemple est-il censé aussi de travailler sur un conteneur de servlet?
Vous pouvez, comme je le sais, mais je n'ai jamais essayé avec des servlets, je suis à l'aide d'aérosol et akka.
j'ai ajouté un petit exemple d'un projet qui est en cours d'exécution sur le dessus de akka + aérosol
OriginalL'auteur 4lex1v
La
entity
paramètre deHttpResponse
est en fait de typeHttpEntity
et votre chaîne n'est implicitement converti en une instance deHttpEntity
. Vous pouvez utiliser l'une des autres constructeurs pour spécifier un type de contenu. Voir la source pour le possible constructeurs dans la version nightly de pulvérisation.Aussi, si vous utiliser un aérosol-de routage, vous pouvez laisser marshalling/unmarshalling à l'infrastructure.
OriginalL'auteur jrudolph
Au cours des dernières version de Pulvérisation (1.2.4 /1.3.4), vous souhaiterez peut-être utiliser
respondWithMediaType
. Voici l'exemple de la documentation :Noter que bien que cela remplace l'en-tête HTTP de la valeur, elle n'annule pas la marshaller utilisé pour la sérialisation de votre contenu sur le fil.
Donc à l'aide d'une récente spray avec vaporisateur, le routage, l'original, le code devrait ressembler à :
OriginalL'auteur Jean
À ajouter à 4lex1v réponse, il y a un très beau, court, simple, de travail (4/15, scala 2.11.5) tutoriel sur la GeoTrellis site, y compris un
build.sbt
. Le GeoTrellis pièces sont aussi simples à éliminer pour les fins de ce débordement de pile question.http://geotrellis.io/tutorials/webservice/spray/
OriginalL'auteur Ram Rajamony