akka-http: Cómo configurar encabezados de respuesta
Tengo una ruta de la siguiente manera:
val route = {
logRequestResult("user-service") {
pathPrefix("user") {
get {
respondWithHeader(RawHeader("Content-Type", "application/json")) {
parameters("firstName".?, "lastName".?).as(Name) { name =>
findUserByName(name) match {
case Left(users) => complete(users)
case Right(error) => complete(error)
}
}
}
} ~
(put & entity(as[User])) { user =>
complete(Created -> s"Hello ${user.firstName} ${user.lastName}")
} ~
(post & entity(as[User])) { user =>
complete(s"Hello ${user.firstName} ${user.lastName}")
} ~
(delete & path(Segment)) { userId =>
complete(s"Hello $userId")
}
}
}
}
El tipo de contenido de mi respuesta siempre debe serapplication/json
como lo he establecido para elget
solicitud. Sin embargo, lo que obtengo en mis pruebas estext/plain
. ¿Cómo configuro el tipo de contenido correctamente en la respuesta?
En una nota al margen, la documentación akka-http es una de las piezas de basura más inútiles que he visto. Casi todos los enlaces al código de ejemplo están rotos y sus explicaciones simplemente indican lo obvio. Javadoc no tiene un ejemplo de código y no pude encontrar su base de código en Github, por lo que aprender de sus pruebas unitarias también está fuera de discusión.