JSON 的 Play 框架分块响应处理

问题描述

我的 Play Framework 控制器中有一个端点,如下所示:

def validateLinksX: Action[JsValue] = Action(parse.tolerantJson) {
    request =>
      request.body
        .validate[ParserFilter]
        .fold(
          errors => {
            val retVal = Source.future(
              Future.successful(Json.prettyPrint(Json.obj("status" -> "error","message" -> JsError.toJson(errors))))
            )
            Ok.chunked(retVal)
          },parserFilter => {
            val batches = Source.future(appBindings.httpService.parse(parserFilter).runToFuture.materialize.map {
              case Success(elems) =>
                scribe.info(s"Total elements -> ${elems.size}")
                  Json.prettyPrint(
                    Json
                      .obj(
                        "baseURL" -> s"${parserFilter.url}","Total Elements" -> s"${elems.size}","results" -> HttpResult.asJson(elems)))
              case Failure(err) =>
                Json.prettyPrint(Json
                    .obj("status" -> "error","message" -> s"${err.getMessage}"))
            })
            Ok.chunked(batches)
          }
        )
  }

正如可以看出我正在对响应进行分块,但是当我尝试它时,我仍然可以将整个 JSON 视为一个块。我确定我遗漏了一些相对微不足道的内容,但 Play 文档并没有那么有用。

有什么想法可以让我以这种方式将部分分块响应发回吗?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)