我正在用 php 实现 REST 服务。
Q1。我可以拆分 Controller 和资源吗?
http://myserver/myCtrl.php?res=/items/1
问题 2。如果不是,是否有标准规范(如果存在)用于在 iis、apache、nginx 等上重写以在重写后继续使用 http-verb?
如果不行,怎么解决?
最佳答案
对于 API(我有一个框架),我倾向于使用如下所示的 URL 结构:
http://domain.com/api/[resource]/[id]/[subresource]强>
我将所有请求传递给带有 .htaccess 文件的前端 Controller ,该文件解析传入的请求并将请求传递给相关 Controller 。所以我的 index.php 最简单的看起来类似于以下内容:
<?php
$request = explode('/', trim($_SERVER['REQUEST_URI'], '/'));
$resource_name = ucfirst($request[0]).'Controller';
$http_verb = strtolower($_SERVER['REQUEST_METHOD']);
$controller = new $resource_name;
$response = call_user_func_array(array($controller, $http_verb), array($request));
header('Content-Type: application/json');
echo json_encode($response);
因此,如果您调用 http://domain.com/api/news,那么它将尝试实例化一个名为 NewsController
的类,如果是 GET 请求,则 get()
该类的方法,或 post()
对于 POST 请求,等等。然后将该调用的响应作为 JSON 返回给客户端。
希望这足以让您入门。
关于php - PHP、重写和 http-verbs 上的 REST 实践,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8834758/