【问题标题】:RESTful frameworks for Android, iOS...?适用于 Android、iOS 的 RESTful 框架...?
【发布时间】:2011-05-05 02:30:06
【问题描述】:

我的公司正在重新设计它的 API 并希望这次一切正常 ;) 就是这样设置...

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

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

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

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


  • 安卓:RESTProvider from Novoda / Carl-Gustaf Harroch

    • 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 之间通信的库
    • RESTful 和基于“ActiveResource”的
    • 包括 XML/JSON 解析器
    • 免费许可
    • 分页?,android?,延迟加载?


  • 安卓:Spring Android Rest Template Module
    • Spring 的 RestTemplate 是一个健壮的、流行的基于 Java 的 REST 客户端。 Spring Android Rest Template Module 提供了一个适用于 Android 环境的 RestTemplate 版本。


  • 安卓:Feed Framework
    • com.google.android.feeds
    • 帮助您构建内容提供程序的类的集合。该框架专为帮助您将应用程序连接到 Web API 而设计。

【问题讨论】:

  • 经过相当长的评估,我们决定现在选择“Spring Android Rest Template Module”。

标签: iphone android rest restful-authentication activeresource


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

    我建议看看RestKit for iOS

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

    【讨论】:

    • 我在我的几个项目中使用 RestKit for iOS。它总是能达到预期。
    • 看起来restkit已经不再维护了。
    【解决方案3】:

    我是 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. 返回具有该对象内一对多关系的完整对象: {“父母”:.... "has": {"完整的对象不仅仅是 ID"} }
    8. 不要只返回 ID(“category”:[2,3,4] 应该是“category”:[{“name”:“testing”,“id”:2},{“name”:“生产", "id": 3 }} )
    9. 将每个调用视为彼此独立(即,我应该有足够的信息来调用 http://test.com/object.json 来填充我的视图)

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

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

    【讨论】:

    • 关于第 8 点(和一般 REST 原则):确保每个“事物”都是唯一标识的,并且可以通过 URL 访问。 URL(唯一资源定位器)可用作对象 ID。
    • 你好,它是否足够稳定,我打算在项目中使用它。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-04-06
    • 1970-01-01
    • 2015-11-15
    • 1970-01-01
    • 1970-01-01
    • 2022-01-22
    • 2012-01-31
    相关资源
    最近更新 更多