如何在PHP中创建Web API服务

时间:2011-12-01 12:02:48

标签: php web-services wsdl

  

可能重复:
  Is it necessary to have a wsdl file for the creation of a webservice in php?

我想创建一个Web API。

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

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

请告诉我一步一步说明如何实现这一目标。

1 个答案:

答案 0 :(得分:54)

基本上,什么是API?

如果您了解数据如何从HTML表单转换为php代码,那么请相信我,您了解所有关于API的信息。在这里,我们讨论的是最终由这些形式创建的网址,而不是谈论形式......

API的类型是什么?

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

如何使用身份验证密钥在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();

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

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

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

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

我猜这个谷歌的视频可以解释得比我好多了...... 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

注意:答案是汇编所有参考文献!!