我想在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