我正在使用php中的rest webservices。我想知道我可以在不使用任何框架(cakephp,zend,Tonic)的情况下在php中创建rest webservices。 如果有人有一些想法。请告诉我?
答案 0 :(得分:1)
我使用cURL实现了RESTful服务。现在我们不使用框架的唯一原因是因为我们使用的PHP版本非常老。我们还有一位经理,他说这就是它的完成方式。因此,我的建议是不要重新发明轮子,并为你做大部分工作。
答案 1 :(得分:1)
您必须自己读出请求,进行一些处理(无论您的Web服务是做什么的),并返回一些答案的表示。
Webservices经常使用像PUT
这样的http方法。有关如何操作的说明,请参阅here。
答案通常采用JSON
或xml
格式。 PHP具有扩展或包含对这两种格式的支持。请参阅此处查看JSON,此处查看xml。也许你甚至不得不使用其中的一些进行输入处理。
在开始开发之前,一个重要的部分是,您确切地知道您的Web服务应该做什么,应该如何调用以及应该返回什么。所以主要是在开始编码之前定义你的API 。
答案 2 :(得分:0)
假设我们有像这样的应用程序目录结构
使用以下代码
编辑api目录下的.htaccess文件<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule (.*)$ request.php?_url=$1 [QSA,NC,L]
</IfModule>
每个请求附带任何以“/ api”开头的模式都会转到我们的“request.php”
这将使用/ api / *
处理任何休止模式我们的request.php看起来像
<?php
session_start();
$_url = $_GET['_url'];
switch ($_url) {
case "products" :
echo "All Products";
break;
case "product" :
echo "One Product";
break;
case "product/save" :
$request_body = file_get_contents('php://input');
$data = json_decode($request_body);
echo "Data saved to DB";
break;
default :
header($_SERVER["SERVER_PROTOCOL"] . "404 Not Found", true, 404);
}