如何在不使用任何框架的情况下制作休息Web服务

时间:2012-02-29 12:39:57

标签: php

我正在使用php中的rest webservices。我想知道我可以在不使用任何框架(cakephp,zend,Tonic)的情况下在php中创建rest webservices。     如果有人有一些想法。请告诉我?

3 个答案:

答案 0 :(得分:1)

我使用cURL实现了RESTful服务。现在我们不使用框架的唯一原因是因为我们使用的PHP版本非常老。我们还有一位经理,他说这就是它的完成方式。因此,我的建议是不要重新发明轮子,并为你做大部分工作。

答案 1 :(得分:1)

您必须自己读出请求,进行一些处理(无论您的Web服务是做什么的),并返回一些答案的表示。

Webservices经常使用像PUT这样的http方法。有关如何操作的说明,请参阅here

答案通常采用JSONxml格式。 PHP具有扩展或包含对这两种格式的支持。请参阅此处查看JSON,此处查看xml。也许你甚至不得不使用其中的一些进行输入处理。

在开始开发之前,一个重要的部分是,您确切地知道您的Web服务应该做什么,应该如何调用以及应该返回什么。所以主要是在开始编码之前定义你的API

答案 2 :(得分:0)

假设我们有像这样的应用程序目录结构

  • API
    • request.php
    • 的.htaccess

使用以下代码

编辑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);
}

check out here