如何与Jackson Marshaller结合使用自定义内容类型

时间:2019-05-24 07:56:36

标签: jackson akka marshalling akka-http

在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())
        }
    }
}

当我执行我的应用程序时,会收到警告: [WARN] [05/24/2019 09:43:47.531] [routes-akka.actor.default-dispatcher-4] [akka.actor.ActorSystemImpl(routes)]明确设置HTTP标头'内容类型:文本/纯文本; charset = UTF-8'被忽略,不允许显式Content-Type头。改为设置HttpResponse.entity.contentType

这与akka文档中提供的示例相反: https://doc.akka.io/docs/akka-http/current/routing-dsl/directives/route-directives/complete.html

您能告诉我一种如何用杰克逊编组器和自定义内容类型来编组实体吗?

0 个答案:

没有答案