在 scala 应用程序(播放框架)中使用 WSClient

Use WSClient in scala app (play framework)

我不确定是否缺少一些真正基本的东西,但我不知道如何使用 WSClient。我已经看到所有的例子都说你需要将 WSClient 作为依赖项传递给 class,我已经完成了,但是当我 运行 程序时,我实际上传递给我的 class?

比如我的class签名是:

class myClassName(ws: WSClient)

但是当我实例化 class 时,我实际传递给它的是什么?我也很高兴忽略 Play!框架的东西,如果这样更容易,只需使用 SBT 来 运行 它(我更熟悉)。

不清楚哪里您可能使用了WSClient,但建议您让Play框架'manage'成为客户端的实例。当您实例化您的应用程序时,它会被注入:

class Application @Inject() (ws: WSClient) extends Controller {
  ...
}

这意味着在 ... 中您可以访问 ws 作为值。您可以使用它来实例化 myClassName

class Application @Inject() (ws: WSClient) extends Controller {
  val myclass = myClassName(ws)  // passes the injected WSClient to myClassName
}

或者您可以编写一个 returns 和 WSClient 的函数,这样您的代码的某些其他区域可以调用您的 Application 对象以获得它的对象处理程序。

但关键是 Application 对象由于 注入 而获得该句柄,这是 @Inject 注释。

如果需要生成一个WSClient,手动管理,有good instructions here。推荐的实现依赖于 Play!框架库,但不依赖于 Application