我想在PHP中創建一個可供不同消費者(網頁,Android設備,iOS設備)使用的Web服務。在PHP中創建Web服務
我來自微軟的背景,所以我很容易在C#中如何做。理想情況下,我希望能夠提供可以發送JSON的REST服務。
你能告訴我如何在PHP中實現這個功能嗎?
感謝
塔裏克
我想在PHP中創建一個可供不同消費者(網頁,Android設備,iOS設備)使用的Web服務。在PHP中創建Web服務
我來自微軟的背景,所以我很容易在C#中如何做。理想情況下,我希望能夠提供可以發送JSON的REST服務。
你能告訴我如何在PHP中實現這個功能嗎?
感謝
塔裏克
我建議你去爲Yii
這是值得學習的。你可以很容易地在此建立它。 Web Service。 Yii提供了CWebService
和CWebServiceAction
來簡化在Web應用程序中實現Web服務的工作。 Web服務依賴於SOAP
作爲其通信協議棧的基礎層。
謝謝。我會看看框架 – Tariq 2012-03-22 10:30:14
PHP中最簡單的方法是使用GET/POST作爲數據輸入,並使用echo
作爲數據輸出。 下面是一個示例:
<?php if(empty($_GET['method'])) die('no method specified');
switch($_GET['method']){
case 'add': {
if(empty($_GET['a']) || empty($_GET['b'])) die("Please provide two numbers. ");
if(!is_numeric($_GET['a']) || !is_numeric($_GET['b'])) die("Those aren't numbers, please provide numbers. ");
die(''.($_GET['a']+$_GET['b']));
break;
}
}
保存爲test.php的,去http://localhost/test.php?method=add&a=2&b=3
(或任何你的服務器是),它應該說5
。
PHP確實對SOAP服務器有本地支持(The SoapServer class manual顯示它),我發現它非常易於使用。
如果使用框架,創建REST風格的API非常簡單。我不想討論哪個框架更好,但CakePHP也支持XML格式的輸出,我非常肯定其他人也會這樣。
如果您來自微軟的背景,只需要小心思考「數據集」。他們是一個非常具體的微軟事物,過去一直是我的詛咒。這可能不會成爲你的問題,但你可能想看到微軟和開放實現之間的差異。
當然PHP有一個本地json_encode()函數。
你可以看看爲Codeigniter編寫的這個漂亮的RESTful服務器,RESTful server。 它支持XML,JSON等響應,所以我認爲這是你的庫。 Tutsplus網絡上甚至還有一個很好的教程 - Working with RESTful Services in CodeIgniter
我開發了一個類,它是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此外,帕拉姆鍵名。以及方法名稱不區分大小寫。)
+1 - 非常好的實施傑克 – 2012-12-19 20:19:32
謝謝!我最近在GitHub上發佈了RestServer類,並做了一些進一步的改進! (上面的鏈接將帶你到我的博客文章關於它與GitHub鏈接) – 2012-12-31 04:53:00
不錯..它可以 – Rinzler 2013-03-01 08:31:35
您也可以嘗試PHP REST數據服務https://github.com/chaturadilan/PHP-Data-Services
您可以使用任何現有的PHP框架像CodeIgniter或Symfony或CakePHP建立web服務。
您也可以使用普通的PHP像disscussed在這個example
從那裏你會被獲取數據在你的PHP應用程序將返回JSON?它會來自MySQL數據庫嗎? – anubhava 2012-03-22 08:02:01
不贊成投票問題是合法的,如果你發現問題有任何的差異,請告訴他,但直接投票是不好主意 – 2012-03-22 08:04:29