【发布时间】:2020-04-28 09:13:15
【问题描述】:
我需要用 finatra 以 camelCase 格式返回一个 json 响应,但默认情况下它是在 snake_case 中的。从我目前发现的情况来看,我需要使用 ObjectMapper,但我不明白创建它后我在哪里传递它。一个例子会很有帮助。这是我所拥有的:
import com.twitter.finagle.http.Request
import com.twitter.finatra.http.Controller
class myTargetingController extends Controller {
val endpoint = "http://....."
get(s"$endpoint/?") { request: Request =>
// what do I do with it?
// val objectMapper = ScalaObjectMapper.builder.camelCaseObjectMapper
response.ok.json(myObject)
}
}
================================================ ====================
import com.twitter.finagle.{Service, SimpleFilter}
import com.twitter.finagle.http.{ Request, Response}
import com.twitter.finatra.http.routing.HttpRouter
import com.twitter.finatra.http.{HttpServer}
import com.twitter.finatra.http.filters.CommonFilters
import com.twitter.util.Future
object MyServerApp extends MyServer
class MyServer extends HttpServer {
override protected def configureHttp(router: HttpRouter) {
router
.filter[CommonFilters]
.add[CorsFilter, MyController]
}
}
附:我对 Scala 非常陌生
【问题讨论】:
-
你不能像那样在终点使用它。您需要将逻辑包装在
TwitterModule中并将该模块绑定到您的服务器,以便正确注入。总体而言,使用ScalaObjectMapperModule可能会更容易 -
能否举个例子。正如我所说,我对 Scala 很陌生,你所说的有很多未知数:)
-
我需要启动我的一个旧的 finatra 项目以确保我的示例有效,我不想给你我没有验证过的代码。所以你必须等到我回家。同时请熟悉 Finatra 模块。它将澄清所有那些“未知数”twitter.github.io/finatra/user-guide/getting-started/…