如何创建自己的Web API / Web服务

时间:2011-02-26 08:20:48

标签: iphone web-services api google-app-engine ios

我一直在开发iOS应用程序,但它们都处理设备上的信息。

我希望扩展我的知识和我的应用程序的吸引力。

我需要的是一个很好的教程,介绍如何创建自己的在线SQL数据库以及访问其中所有信息的API。

我使用过多个API(Twitter,Facebook,Google等),所以在iOS方面我已经准备好了。

我很乐意使用Google App Engine实现它,但如果你知道更好的方法来实现它,我很高兴听到它们;我听说Java,.net和Ruby是最好的选择。

我在网上找到了很多教程,但我知道Stack Overflow用户拥有丰富的资源知识,可以帮助我和其他开发人员更快,更轻松地学习和学习。

我认为这个问题的答案对于所有对Wb API感兴趣的开发人员来说都是一个很好的资源。

非常感谢你的帮助。

3 个答案:

答案 0 :(得分:7)

恕我直言,AppEngine是一个很好的选择,因为几乎不需要设置/管理它。此外,它预先包装了强大的服务,如数据存储,任务队列,用户身份验证,消息传递等。对我来说,最大的优势是数据存储,它是无模式的,因此您不必随着应用程序的进展不断更新/管理架构。

缺点是它有一些不同的编程模型,因此开发人员从servlet + SQL背景开始倾向于使用它。由于你是新手,这应该不是问题。

以下所有建议都是Java,因为这就是我所知道的。希望其他人会发布呈现其他平台/语言的答案。

要实现此目的,您需要:

  1. 设置网络服务。使用REST,因为这是最常见且易于设置/使用的。我尝试了所有主要的Java REST框架并最终得到Resteasy,因为它只是有效并且有恕我直言的最佳文档。

  2. 了解GAE数据存储的工作原理。有几个API可以使用数据存储区:

    一个。低级是很麻烦的,因为你需要使用它的模型类(实体),所以你将在你的对象和这个API返回的实体对象之间进行大量的复制。

    湾JDO / JPA是java ORM标准,但它们是为SQL数据库创建的,并且实际上是在数据存储区中。我建议不要使用它们,因为它们只是低级别的附加层,并且只是试图欺骗开发人员Datastore是一个SQL数据库。

    ℃。 Objectify。这是第三方OSS库,但作者是Google支持的AFAIK。它是一个低级别的层,但是以一种非常自然的方式,所以不要掩盖数据存储区的功能。我建议使用它。

  3. 认证。您需要身份验证。 GAE支持开箱即用的OpenID / OAuth(只需在命令面板中勾选federated login选项)。现在最棘手的部分是使用iPhone和其他设备:

    一个。要求用户在您的iPhone应用中输入Google凭据。有些用户不愿意这样做(例如我)。在这种情况下,请使用iPhone OAuth client

    湾在嵌入式浏览器中打开OpenID登录网页:Authenticating with Stack Overflow programmatically

答案 1 :(得分:1)

我想您想创建API并将其托管在自己的PC上时,将需要为路由器配置托管API的端口,这称为端口转发 strong>

答案 2 :(得分:0)

我在“原始”PHP / MySQL(没有框架)中完成了几个app后端。这种方法的优势在于它真的非常容易实现,并且现有的每个托管公司都支持PHP和MySQL。如果你的后端专门用于iphone,你甚至可以用plist-format xml返回所有需要零解析的数据,并且可以立即在iphone应用程序中转换成字典/数组。

另一个优点是您可以在开发系统或家庭网络上设置测试服务器,只要您使用IP地址而不是名称,您就可以通过iphone模拟器甚至iphone设备在本地测试后端(如果您是一名优秀的系统管理员/网络人员,您可以将其设置为使用您的网络名称。

原始PHP / MySQL的缺点是你没有免费获得管理员界面来管理/编辑像django这样的大多数框架的数据实体。另一个缺点是扩展到大量流量 - 但如果您使用合理的托管服务,那可能不是问题。

有大量的书籍和资料在线进行php / mysql网站。