0

我有一个网站,用 PHP 和 MySQL 数据库编写。为了学习如何编写 iPhone 和 Android 应用程序,我想创建一个可供 iOS 和 Android 应用程序使用的 Web 服务。

我该如何继续?访问 MySQL 数据库的功能已经到位,因为它们现在已用于该站点 - 但是接下来的步骤是什么使这些功能/类可用于我的 Web 服务并因此可用于应用程序?我有哪些选择?认证?节点.js?有人知道很棒的教程吗?

谢谢。

4

2 回答 2

1

对于从设备向您网站的 API 请求信息,我建议使用 GET 或 POST:

得到

http://www.example.com/api/v1/getUsers?username=User*

邮政

http://www.example.com/api/v1/getUsers

Post the following information to the above URL:
  username = User*

关于来自 Web 服务器的响应,我建议以 JSON 或 XML 格式输出信息。Android 和 iOS 都有内置的 XML 解析库,也有 3rd-party 库来解析 JSON。这些天它们甚至可能是内置的。

我的建议是同时支持 JSON 和 XML,因此您可以使用最适合您正在使用的开发环境约束的任何方法:

JSON

{
  'success':True,
  'users': [
    {'id': 1, 'username': 'User1'},
    {'id': 2, 'username': 'User2'},
    {'id': 3, 'username': 'User3'}
  ]
}

XML(利用属性)

<response>
  <success>1</success>
  <users>
    <user id="1" username="User1" />
    <user id="2" username="User2" />
    <user id="3" username="User3" />
  </users>
</response>

XML(仅使用标签)

<response>
  <success>1</success>
  <users>
    <user>
      <id>1</id>
      <username>User1</username>
    </user>
    <user>
      <id>2</id>
      <username>User2</username>
    </user>
    <user>
      <id>3</id>
      <username>User3</username>
    </user>
  </users>
</response>

在 PHP 中,您可以通过以下方式输出 JSON:

<?php

$response = array(
  'success': True,
  'users': array(
    array('id' => 1, 'username' => 'User1'),
    array('id' => 2, 'username' => 'User2'),
    array('id' => 3, 'username' => 'User3')
  )
)

print json_encode($response);

根据您是否要使用标签属性,输出 XML 会稍微复杂一些...

于 2013-03-25T20:10:38.157 回答
0

您需要的是您的应用程序可以访问的 API。你可以用任何你喜欢的方式定义它们,但有些方式比其他方式更常见,例如 RESTful 实现。

使用 rest,您可以使用 4 个动词为域上的数据定义访问点:GET、POST、UPDATE 和 DELETE。您可能认识其中两个。

使用诸如 Slim Framework for php 之类的库,您可以定义访问点,如下所示:

    self::$Slim->post('/document', '\MyApp\DocumentController::newDocument');
    // Get all documents for authenticated user
    self::$Slim->get('/document', '\MyApp\DocumentController::getAllDocuments');

在此示例中,Web 服务将接受对 /document 的 post 或 get 请求,其中 get 表示“获取所有文档”,而 post 表示“创建新文件”。这些函数是静态的,因此您不必为任何给定情况实例化所有控制器。

无论哪种情况,结果都是使用 JSON 发出的。iOS 和 Android 都可以使用内置函数或第三方库来解释 JSON。我个人喜欢 AFNetworking for iOS。

简而言之,创建 www.yourdomain.com/api,并使用 Slim 框架添加 /api/document 之类的入口点,并让这些入口点执行您的逻辑。使用 JSON 响应,例如在 php.ini 中使用 json_encode()。在应用端使用 AFNetworking 发出请求并解释 JSON 数据。

同样,这些是我的偏好,还有其他方法。

祝你好运!

于 2013-03-25T20:11:41.640 回答