最佳实践:在为 iPhone 应用程序创建 Web 应用程序 API 之前我应该了解什么?

问题描述 投票:0回答:3

我正在开始 iPhone 应用程序开发,并希望创建一个涉及从 Web 应用程序提取数据的应用程序。我将使用 PHP 和 Zend Framework 开发 API。我以前从未创建过公共 API,也从未创建过使用公共数据的 iPhone 应用程序。

以下是我的一些具体问题:

我需要做的一件事是使用 API 中的数据创建一个表视图。

  • 我的 API 应该返回什么数据格式? XML、JSON、HTML? (我假设 XML 将是最简单的)

假设我的 API 有一个

fetchAll
函数,它返回数据库表中的所有记录,我应该如何格式化这些数据,以便在我的 iPhone 应用程序中轻松使用?

# http://myapp.com/api/people/fetchAll
array(
    0 => 'John',
    1 => 'Sally',
    2 => 'Chris'
)

更新: 经过一些研究后,我决定(在服务器端)我想实现一个返回 JSON 的 RESTful API。所以我的 iPhone 应用程序最终将是一个 REST 客户端。

我还发现了这篇文章,尽管现在可能已经过时了:Creating RESTful Web Service Clients 可可和可可触感

ios web-applications zend-framework
3个回答
5
投票

我建议使用 JSON。

在服务器上,您可能希望从“fetchAll”请求中返回 JSON 格式的数据。

在iPhone客户端应用程序上,从请求中获取数据后 (尝试使用ASIHTTPRequest库),您可以使用诸如TouchJSON之类的库来解析JSON。

更新

我仍然推荐 JSON,但我只是使用 NSURLConnection 与 API 进行通信。实际上,我使用 iOS Recipes 书中的包装器,因为它们提供了很好的块回调,而不需要实现委托方法。


1
投票

查看目标资源项目。它可以与 Rails 一起开箱即用,但也可以与使用 ActiveResource 约定的任何站点一起使用。

我已经在几个不同的项目中成功使用了它。

它期望对象的 JSON 序列化是这样的:

{ "className" : { "key1" : "value1", "key2" : { "className2" : { "key1" : "value1" }}}}

我认为,数组与前面的多个条目相同,由方括号和逗号分隔。


0
投票

正如我在评论中提到的,我会使用 REST + JSON。但是,如果您想测试另一种方法,我在 Github 中发布了一些代码,它提供了 Cocoa 的 NSURL 加载机制的包装器,这可能会有所帮助。

它最初的目的是加载格式化为 Apple 属性列表(plist)的 XML 数据,这是 Cocoa 的本机序列化机制。有 Ruby 和 Python 库可用于生成 plist 格式的 XML(我想其中一些库还生成二进制 plist,这样解析和反序列化速度更快)。

在第 154 行,您可以看到加载到 NSData 实例中的属性列表如何转换为原生 NSDictionary。

http://github.com/akosma/iphonerestwrapper/blob/master/Classes/Wrapper.m#L154

© www.soinside.com 2019 - 2024. All rights reserved.