1

我不太了解如何将最小示例应用于我的网络应用程序。

在客户端代码中,我覆盖了该doCall方法:

override def doCall(req: Request) = {
   println(req)
   MyServer.routes.apply(req)
}

但是客户怎么知道MyServer呢?

当然,在这里它可以工作,因为所有代码都在同一个文件中,但实际上客户端和服务器通过共享的交叉项目进行通信。

我需要用doCall明确地写dom.ext.Ajax.post吗?

4

1 回答 1

2

我相信你想要的是更长的例子最小的示例演示了同一项目中的 Autowire API (不是非常有用)。较长的示例演示了真正的客户端/服务器交互。

例如,它显示了如何doCall使用 AJAX 调用来实现:

object Client extends autowire.Client[Js.Value, Reader, Writer]{
  override def doCall(req: Request): Future[Js.Value] = {
    dom.ext.Ajax.post(
      url = "/api/" + req.path.mkString("/"),
      data = upickle.json.write(Js.Obj(req.args.toSeq:_*))
    ).map(_.responseText)
     .map(upickle.json.read)
  }

  def read[Result: Reader](p: Js.Value) = readJs[Result](p)
  def write[Result: Writer](r: Result) = writeJs(r)
}
于 2016-02-15T20:25:44.053 回答