如何使用PHP for iOS创建Web服务?

时间:2013-03-25 20:01:08

标签: php android ios web-services

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

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

感谢。

2 个答案:

答案 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数据。

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

祝你好运!