2009-10-27 51 views
45

我正在開發自己的PHP庫,我想從我的API調用RESTful Web服務。這可以在PHP中完成,如果有的話,這樣做的基礎是什麼?你可以在PHP中使用REST嗎?如果是這樣如何?

+6

+1:抵消downvote,這是一個合理的(如果模糊的)問題。 – 2009-10-27 04:22:23

+1

我想他是在處理PUT和DELETE請求方法,所以我不認爲這是一個無效的問題。 – bart 2014-01-30 10:30:57

+0

讓這個問題繼續你堅持;你想在這裏證明什麼?它擁有超過43,000次瀏覽量,是PHP + REST的第五次谷歌搜索結果。停止殺害這個網站代表什麼 - 無關緊要的問題。 – 2017-01-09 03:54:42

回答

38

由於REST是HTTP協議的相同方法在客戶端 - 服務器體系結構設計中的應用,並且PHP已經非常適合處理諸如GET和POST之類的HTTP協議請求。 PHP特別適合簡化開發REST服務。

記住REST是已存在的相同http模式的應用程序。

因此,如果您目前有做類似的應用程序:

  1. HTML表單
  2. PHP程序
  3. 在表
  4. HTML輸出

因此,爲了使地歇息,你會需要:

  1. 接受參數來自網絡。這很容易,因爲您將以get或post的形式接收參數...所以它基本上是相同的。
  2. PHP過程
  3. 輸出在任一JSONXML。就是這樣!

    很簡單。

現在困難的部分是讓你的API(函數和URL),你會產生程序員友好。

在這種情況下,我建議你看看flickr API作爲一個非常容易被開發者喜歡的例子,並且有很好的文檔。

有關API的更多信息看這個介紹:How to Design a Good API & Why it Matters (Joshua Bloch)

最後一個RESTful API應該也實現了PUT和DELETE HTTP協議的方法時,它是有道理

例如,如果你有api中的一個刪除操作,表示服務應該從http協議接收刪除方法。而不是發送操作參數作爲發佈請求的一部分的更常見的事情。「由於REST是HTTP協議的相同方法在客戶端 - 服務器體系結構的設計中的應用,並且PHP已經很好地處理HTTP協議請求了比如GET和POST,PHP特別適合開發REST服務。「

並且還添加了最後一個注意事項,即當該操作對您的api有意義時,您應該實施適當的PUT或DELETE方法。

+2

-1:對不起,默認情況下沒有語言是REST。例如在REST中,POST請求與GET非常不同,並且您還需要支持DELETE和PUT。 – 2009-10-27 04:20:45

+0

@Jim Ferrans - 爲什麼必須支持DELETE? – 2009-10-27 04:21:51

+0

@elviejo - 如果你看看stackoverflow的url,你會看到一個REST url。這不是PHP在默認情況下在解析中所做的,因爲沒有問號。 – 2009-10-27 04:22:44

4

如果你正在考慮客戶端的事情,我會建議檢查馬特Sukowski的PEST。

你會發現在GitHub上的倉庫: https://github.com/educoder/pest

還檢查了這個線程: PHP REST Clients

更新2013年12月13日:
這不能不說是一個活的開源項目,馬特Sukowsky今年夏天把它交給了新的看管人,因爲他沒有覺得自己可以騰出足夠的時間,從那以後有很多很多的提交。所以害蟲是比以往更好的休息在PHP :)

5

我開發了一個類是PHP本地SoapServer類的REST等效。

您只需包含RestServer.php文件,然後按如下所示使用它。

class Hello 
{ 
    public static function sayHello($name) 
    { 
    return "Hello, " . $name; 
    } 
} 

$rest = new RestServer(Hello); 
$rest->handle(); 

然後你就可以這樣調用:

http://myserver.com/path/to/api?method=sayHello&name=World 

(請注意,它無關緊要什麼順序PARAMS查詢字符串提供另外,帕拉姆鍵名稱以及方法名稱不區分大小寫。)

+0

這個類爲什麼不區分HTTP協議? – Isius 2014-02-12 03:50:23

+0

我沒有需要它在我最初使用它的應用程序中。隨意分叉並改進它。 – 2014-02-13 04:57:01

相關問題