В приложении akka-http я хочу выполнить запрос с пользовательским типом контента и маршалировать мою сущность ответа с помощью маршаллера Джексона.
Однако я еще не выяснил, какая директива о маршаллинге соответствует моим потребностям.
private fun getFooByFleet(
system: ActorSystem,
fooId: String,
accept: String?
): RouteAdapter? {
val actor = system.actorOf(Props.create(FooActor::class.java))
val ask: CompletionStage<FooResponse> =
ask(
actor,
GetFoo(fooId),
5000
).toCompletableFuture() as CompletableFuture<FooResponse>
return onComplete(ask) {
when (it.get().items.size) {
0 -> complete(StatusCodes.NOT_FOUND)
else ->
complete(StatusCodes.OK, listOf(ContentType.create(ContentTypes.TEXT_PLAIN_UTF8)), it.get(), Jackson.marshaller())
}
}
}
Когда я выполню свое заявление, я получу предупреждение:
[ПРЕДУПРЕЖДЕНИЕ] [24.05.2009 09: 43: 47.531] [rout-akka.actor.default-dispatcher-4] [akka.actor.ActorSystemImpl (маршруты)] Явно установите HTTP-заголовок 'Content-Type: text / plain ; charset = UTF-8 'игнорируется, явный заголовок Content-Type
не допускается. Вместо этого установите HttpResponse.entity.contentType
.
Это противоречит примерам, представленным в документах akka:
https://doc.akka.io/docs/akka-http/current/routing-dsl/directives/route-directives/complete.html
Можете ли вы показать мне способ маршалинга сущности с помощью маршаллера Джексона и пользовательского типа контента?