Как я могу использовать пользовательский тип контента в сочетании с маршалом Джексона - PullRequest
0 голосов
/ 24 мая 2019

В приложении 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

Можете ли вы показать мне способ маршалинга сущности с помощью маршаллера Джексона и пользовательского типа контента?

...