我有一个用PHP编写的带有MySQL数据库的网站。为了学习如何编写iPhone和Android应用程序,我想创建一个可供iOS和Android应用程序使用的Web服务。
我如何继续?访问MySQL数据库的功能已经到位,因为它们现在用于网站 - 但是接下来的步骤是使这些功能/类可用于我的Web服务,因此也适用于应用程序?我有什么选择? OAuth的? Node.js的?有人知道很棒的教程吗?
感谢。
答案 0 :(得分: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解析库,还有第三方库来解析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有点复杂,具体取决于您是否要使用标记属性......
答案 1 :(得分:0)
您想要的是您的应用可以访问的API。您可以以任何您喜欢的方式定义它们,但某些方法比其他方式更常见,例如RESTful imlpementations。
使用休息,您可以使用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的请求,其中get表示“获取所有文档”,post表示“创建新”。这些函数是静态的,因此您不必为任何给定的情况实例化所有控制器。
在任何一种情况下,结果都是使用JSON发布的。 iOS和Android都可以使用内置函数或第三方库来解释JSON。我个人喜欢AFNetworking for iOS。
简而言之,创建www.yourdomain.com/api,并使用Slim Framework添加/ api / document等入口点,让这些入口点符合您的逻辑。使用JSON进行响应,例如使用php中的json_encode()。在应用程序端使用AFNetworking发出请求并解释JSON数据。
同样,这些是我的偏好,还有其他方式。
祝你好运!