使用REST Web服务作为Lift的数据源?

时间:2010-04-07 15:20:09

标签: scala lift

有没有办法使用Web服务(在本例中为REST)作为Lift应用程序的数据源?我可以找到许多使用Lift来提供REST API的教程/示例,但在我的情况下,数据被托管在其他地方并作为REST Web服务导出。非常感谢指向doc的指针。

谢谢, 杰夫

4 个答案:

答案 0 :(得分:2)

事实上,这与Lift无关。已经有很多不同的信息:

  • 已建议的HttpClient库,
  • Dispatch用于访问HTTP服务的Scala库
  • 有关如何在需要时以各种方式在Scala中缓存数据的信息

考虑彻底缓存,如果您的应用程序生成大量请求并且您可以负担缓存,则通常是一个不错的选择。缓存将让您实现许多目标:

  1. 减少响应时间,因为您不依赖于远程服务(如果您进行同步数据处理)
  2. 避免在远程服务死亡的情况下拒绝服务。否则,您的应用程序将生成许多套接字来读取数据并耗尽资源(套接字或线程或其他内容)
  3. 不要超过远程服务的SLA,因为许多服务会限制每个单位时间内允许的请求数量。
  4. 所以你可以坐下来把这些东西放在一起,就是这样。

答案 1 :(得分:1)

如果您真的想要花哨,可以为基于REST的数据源创建Record实现。已经有一个与CouchDB一起使用。使用lift-couchdb模块,与CouchDB的交互被抽象掉,你所处理的只是Scala代码。这里有一个简短的维基页面,其中包含如何开始使用lift-couchdb的说明:

http://www.assembla.com/wiki/show/liftweb/CouchDB

相关的源代码文件可在此处获取:

http://github.com/lift/lift/tree/master/framework/lift-persistence/lift-couchdb/src/main/scala/net/liftweb/couchdb/

使用Record界面,您可以访问许多Traits,您可以使用这些Traits提供最少的代码编写功能,例如创建HTML表单,提供基于生命周期的调用以及轻松验证的挂钩。

答案 2 :(得分:0)

我在HttpClient上放了一个scala图层,然后使用它。我一直想把它放在github上一段时间。

答案 3 :(得分:0)

我使用Dispatch(它是HttpClient的包装器)来进行REST调用。看起来很简单