Akka-http: Accepter et gérer le type de contenu
J'essaie à Akka-http et j'espère que quelqu'un peut jeter de la lumière sur les questions suivantes:
- Comment créer des itinéraires différents basés sur l'en-tête accept: dans la demande? Par exemple, je veux un chemin de code pour gérer les "json" et à manipuler "xml" demandes (par défaut à "json" si l'en-tête est manquante)
- Dans les cas où je ne veux pas le contentType être déduit, comment dois-je le préciser? Par exemple, dans le code ci-dessous j'essaie d'exécuter le json par compactPrint() mais cela change en une chaîne, d'où "text/plain". Je veux remplacer et de dire au client qu'il est toujours en json.
Mon code est quelque chose comme cela;
...
path("api") {
get {
complete {
getStuff.map[ToResponseMarshallable] {
case Right(r) if r.isEmpty => List[String]().toJson.compactPrint
case Right(r) => r.toJson.compactPrint
case Left(e) => BadRequest -> e
}
}
}
}
...
La réponse dans ce cas est text/plain, depuis compactPrint crée une chaîne de caractères.
critique très bienvenue. 😉
source d'informationauteur Will I Am
Vous devez vous connecter pour publier un commentaire.
Vous pouvez définir le Type de Contenu comme suit,
Vous pouvez créer votre propre directive,
et l'utilisation de la directive sur la route comme
Un potentiel de réponse à la question #1 semble être présent, mais je voudrais le faire par l'intermédiaire d'une coutume de directive ou de ou de quelque chose de plus élégant. Malheureusement la documentation pour Akka-Http personnalisé directives semble manquer.
En espérant que quelqu'un peut apporter quelque chose de plus propre.
Il semble que l'on a accepté la réponse ne fonctionne plus avec akka-http v10.0.3.
Cela fonctionne bien :
vous pouvez également faire de
Espère que cette aide.