2011-12-01 121 views
21

可能重复:
Is it necessary to have a wsdl file for the creation of a webservice in php?如何在PHP创建Web API服务

我想创建一个Web API。

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

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

你能告诉我一步一步的说明我怎么能做到这一点。

+0

@TillHelgeHelwig:那完全是一个不同的问题..。其实,这个问题有一个误导性的标题。 – codersofthedark

回答

51

基本上,什么是API?

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

什么是API类型?

Web服务有两种重度使用的API:SOAP和REST。 Google是基于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(); 
} 

这将允许用户发送POST请求找到它一个文件的例子给我们http://example.com/api/delete.php带api_key和entry_id。您会注意到该函数与我们在自己的服务器上编写的函数非常相似,除了我们使用函数检查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

注意:答案是汇编的所有参考!!。

+5

即使它是复制粘贴,他回答并帮助了一个没有在网上找到的人。 –

+0

我找到了这个,而不是其他的参考,所以它已经达到了它的目标。肯定+1 – mok