J'ai une application akka-http qui utilise des flux akka pour le traitement des données. Donc, il est logique de compléter la demande avec Source[Result, _]
pour obtenir la contre-pression à travers la frontière HTTP gratuitement.Comment compléter une réponse Http Akka avec le code de statut Stream et Custom
Versions:
- AKKA-http 10.0.7
- AKKA-flux
- 2.5.2 akka 2.5.2
Ceci est la version simplifiée du code, et ça fonctionne très bien.
pathEnd { post { entity(asSourceOf[Request]) { _ =>
complete {
Source.single("ok")
}
}}}
Depuis cette enpoint est censé créer et entité, au lieu de retourner 200 OK au demandeur, je voudrais revenir le code 204 d'état CRÉÉ. Cependant, je ne pouvais pas trouver un moyen de le faire:
complete { Created -> source.single("ok") }
échoue compilation avecType mismatch, expected: ToResponseMarshallable, actual: (StatusCodes.Success, Source[String, NotUsed])
complete { source.single((Created, "ok")) }
échoue avecType mismatch, expected: ToResponseMarshallable, actual: Source[(StatusCodes.Success, String), NotUsed]
complete(Created) { Source.single("ok") }
échoue avecType mismatch, expected: RequestContext, actual: Source[String,NotUsed]
complete(Created, Source.signle("ok")
échoue avectoo many arguments for method complete(m: => ToResponseMarshallable)
Il semble que custom marshaller pourrait être un moyen pour y parvenir, mais cela signifie essentiellement que je vais avoir besoin d'un unmarshaller par point de terminaison, ce qui n'est pas très pratique ou clair. Donc, la question est, y at-il un moyen (plus pratique que personnalisé unmarshaller) pour compléter la demande avec Source[_,_]
tout en fournissant également le code d'état.
Vous ne pouvez pas simplement envoyer un 'StatusCodes.Created' comme premier paramètre à' complete'? – Kraylog
@NimrodArgov Mise à jour de la question - en bref soit je fais quelque chose de mal, ou ça ne marche pas aussi bien. Mais merci pour suggestion! – J0HN
Je voulais dire 'complete (Created, Source.single (" ok "))' – Kraylog