2011-12-01 139 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