php - 如何在 PHP 中创建 Web API 服务

标签 php web-services wsdl

Possible Duplicate:
Is it necessary to have a wsdl file for the creation of a webservice in php?

我想创建一个 Web API。

我的要求是我想创建一种方式,以便我的客户能够从我的网站数据库中插入/删除数据,但我不希望客户直接登录到我的网站。我希望他们通过客户端请求调用我的 WSDL 文件 URL,这会将响应返回给客户。

我听说我们可以在 SOAP 调用或 NuSOAP 的帮助下做到这一点。我在谷歌搜索后尝试了几种方法,但都没有成功。

你能告诉我一步一步的说明我如何做到这一点。

最佳答案

基本上,什么是 API?

如果您了解数据如何从 HTML 表单到 PHP 代码,那么请相信我,您对 API 了如指掌。在这里,我们不讨论表单,而是讨论最后由这些表单创建的 url。

API 有哪些类型?

Web 服务有两种广泛使用的 API:SOAP 和 REST。谷歌是使用基于 SOAP 的 API 的主要参与者之一,而雅虎(以及他们最近收购的大部分)采用了 REST 方法。通常情况下,您今天遇到的“Web 2.0”服务可能会使用 REST。

如何使用身份验证 key 在 PHP 中创建 REST API 以从数据库中删除值?

假设我们有一个 PHP 类 (manage.php) 可以帮助我们管理数据库中的条目:

class manage {
    private $entryId;

    function __construct($entryId) {
        $this->entryId = $entryId;
    }

    function deleteEntry() {
        //delete $this->entryId from database
    }
}

在我们自己的服务器上,我们可能会像这样访问此功能:

require_once('manage.php');
$m = new manage(23);
$m->deleteEntry();

对我们来说很容易,但是我们如何允许不在我们服务器上的人访问相同的功能?为此,我们将创建第三个文件作为其他开发人员和我们类之间的缓冲区(或“接口(interface)”)。这是我们可能创建的文件示例,允许开发人员访问我们类中的删除功能,我们将在“api/delete.php”中找到它

require_once('manage.php');
if (hasPermission($_POST['api_key']) {
    $m = new manage($_POST['entry_id']);
    $m->deleteEntry();
}

这将允许用户通过 http://example.com/api/delete.php 向我们发送 POST 请求带有 api_key 和 entry_id。您会注意到该函数与我们在自己的服务器上编写的函数非常相似,只是我们使用函数检查 POST api_key 变量以查看其是否有权访问数据库。为了简单起见,我们没有在此处包含该功能 (hasPermission)。除了显示的内容之外,您还必须根据 api_key 找到用户的帐户,进行一些错误检查,并且(如果您想制作一个好的 API)在请求后提供格式正确的成功或错误响应。我们稍后会讨论成功和错误响应。

如何设计好的 API 及其重要性?

我猜 Google 的这段视频比我解释得更好。 http://youtu.be/aAb7hSCtvGw

引用资料:

http://en.wikipedia.org/wiki/Representational_state_transfer

http://en.wikipedia.org/wiki/SOAP

http://particletree.com/features/how-to-add-an-api-to-your-web-service/

http://www.webresourcesdepot.com/how-to-create-an-api-10-tutorials/

Google Search Result

注意:答案是所有引用文献的汇编!!

关于php - 如何在 PHP 中创建 Web API 服务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8341054/

相关文章:

php - 将多个表格插入同一个表格 - 只插入最后一个表格

php - 选择仅适用于第一个下拉列表的选项

c# - 将 XML 传递给 Web 服务的最佳方法?

java - 使用 Spring WS 获取 SOAP header 的内容

php - 如何使用 Zend_Db 快速创建复杂的选择查询?

html - 如何以 REST 方式发送 HTML 表单?

web-services - CXF 自己自动生成 WSDL 导入?

c# - 将 WSDL 导入 .NET 项目只会创建一个空的命名空间

wcf - Schema First WCF 开发

php - 我将如何测试是否使用 php 设置了 cookie,如果未设置则什么都不做