12

我的公司正在修改它的API,并希望这次一切都正确;)这就是设置......

  • 我们通过互联网向客户提供数据。
  • 客户是 iPhone、Android、J2ME、Blackberry 等手机。
  • 服务器使用 Ruby on Rails 编码

我们想通过一个框架来实现...

  • 在客户端上使用 ActiveResource。
  • 框架应该做模型的连接(REST)、解析和(动态)提供
  • 许可证必须是开源的。
  • 应包括授权。我们使用 OAuth 并且需要在任何请求上提供访问令牌。也许作为参数或在 HTTP-Header 中?
  • HTTPS/SSL 支持
  • 分页和关系(延迟加载)支持会很棒!否则框架必须能够针对这些事情进行调整。

我们已经找到了以下框架,请大家对它们进行评估。也许你们中的一个人使用了其中一些或不同的东西......


  • Android:来自 Novoda / Carl-Gustaf Harroch 的 RESTProvider

    • Providers 提供了对 Android 上数据源的抽象,RESTProvider 自动将 RESTful API 响应解析为 Provider。RESTProvider 是在 Android 中处理 Web 服务时所有通常重新实现的功能的实现。用户可以与任何提供 JSON 或 XML 作为响应的 Web 服务 API 无缝连接。要在活动中查询 RESTProvider,用户只需指定一个端点,然后查询 API 的 RESTful 函数。RESTProvider 还处理所有 HTTP 查询和缓存。
    • 除此之外没有找到太多的文档
    • 还提供缓存
    • 发布 + 文档计划于 2011 年初发布

  • iOS:http: //iphoneonrails.com/

    • iOS 和 Rails 之间通信的 Lib
    • RESTful 和基于“ActiveResource”的
    • 包括 XML/JSON 解析器
    • 免费许可证
    • 分页?,android?,延迟加载?


  • Android:Spring Android Rest 模板模块
    • Spring 的 RestTemplate 是一个健壮的、流行的基于 Java 的 REST 客户端。Spring Android Rest Template Module 提供了一个在 Android 环境中工作的 RestTemplate 版本。


  • Android:提要框架
    • com.google.android.feeds
    • 帮助您构建内容提供者的类的集合。该框架专门设计用于帮助将您的应用程序连接到 Web API。
4

3 回答 3

11

我是 RESTProvider 的作者。仍处于早期阶段,因此我不建议在生产中使用它。我一直在生产中的几个项目中使用它,但我根据特定需求调整了大部分代码。我将尝试在年底前获得一个公开的稳定 API。

关于重做 API,我建议如下:

  1. 使用 GZip 压缩
  2. 使用 ETag 进行缓存
  3. 使用未修改的标准(我看到命名从 oauth_token 更改为 my_token 的情况,这使得大多数库在未修改的情况下无用) - OAuth/REST
  4. 为所有对象使用创建/修改时间戳和远程 ID,以启用缓存客户端(SQLite 冲突子句):{“myobject”:{“createdAt”:xxxx,“rid”:“hashvalue”}} 4a。使用一个好的方法来识别返回给用户/活动/应用程序的对象:opensocial 使用“应用程序 ID”+“用户 ID”+“活动 ID”
  5. 首选 JSON 而不是 XML
  6. 喜欢简单(可能的最低深度)
  7. 返回该对象内具有一对多关系的完整对象:{“parent”:....“has”:{“full object not just the ID”}}
  8. 不要只返回 ID ( "category": [ 2,3,4] 应该是 "category": [{"name": "testing", "id": 2},{"name": "production", “id”:3 }})
  9. 考虑每个调用彼此独立(即我应该有足够的信息来调用http://test.com/object.json来填充我的视图)

对于文档: 1. 提供测试服务器 2. 提供 cUrl 进行测试 3. 在 java/php/ruby 等中提供示例脚本...

这就是我现在能想到的。当我提出更多建议时,我可能会在此基础上添加。

于 2010-11-05T11:18:40.133 回答
5

我建议看看RestKit for iOS

  • 高性能、线程化的网络层,带有用于请求/响应的简单 API
  • 对象映射系统,用于以声明方式(包括关系)将远程有效负载映射到本地对象
  • 与 Core Data 集成以提供具有同步功能的远程数据的快速本地缓存
  • 支持从一系列 JSON 有效负载生成种子数据库
  • 与 Ruby on Rails 后端集成的特定支持 (RKRailsRouter)
  • 阿帕奇许可
  • 用于许多优秀应用程序的生产(即Gate Guru
于 2011-01-17T21:53:52.197 回答
1

只是添加到 Spring RestTemplate 选择。这是 SSL https 调用的链接。希望这对其他人有帮助。寻找这个解决方案很久了。

http://www.makeurownrules.com/secure-rest-web-service-mobile-application-android.html

于 2011-12-06T20:33:04.763 回答