【问题标题】:Minimal example for autowire and upickleautowire 和 upickle 的最小示例
【发布时间】:2016-05-26 19:43:47
【问题描述】:

我不太明白如何将minimal example 应用于我的网络应用程序。

在客户端代码中,我重写了doCall 方法:

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

但是客户怎么知道MyServer呢?

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

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

【问题讨论】:

    标签: scala.js upickle


    【解决方案1】:

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

    例如,it shows 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)
    }
    

    【讨论】:

    • 好的,谢谢,我只是想确保我没有遗漏一些明显的东西。老实说,最小的例子真的很烦人,因为代码甚至与当前的 upickle 版本不兼容。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-19
    • 2014-12-12
    • 1970-01-01
    • 2019-09-08
    • 2016-04-18
    • 1970-01-01
    相关资源
    最近更新 更多