我有一个网站,用 PHP 和 MySQL 数据库编写。为了学习如何编写 iPhone 和 Android 应用程序,我想创建一个可供 iOS 和 Android 应用程序使用的 Web 服务。
我该如何继续?访问 MySQL 数据库的功能已经到位,因为它们现在已用于该站点 - 但是接下来的步骤是什么使这些功能/类可用于我的 Web 服务并因此可用于应用程序?我有哪些选择?认证?节点.js?有人知道很棒的教程吗?
谢谢。
我有一个网站,用 PHP 和 MySQL 数据库编写。为了学习如何编写 iPhone 和 Android 应用程序,我想创建一个可供 iOS 和 Android 应用程序使用的 Web 服务。
我该如何继续?访问 MySQL 数据库的功能已经到位,因为它们现在已用于该站点 - 但是接下来的步骤是什么使这些功能/类可用于我的 Web 服务并因此可用于应用程序?我有哪些选择?认证?节点.js?有人知道很棒的教程吗?
谢谢。
对于从设备向您网站的 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 会稍微复杂一些...
您需要的是您的应用程序可以访问的 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 数据。
同样,这些是我的偏好,还有其他方法。
祝你好运!