我正在用 php 开发 RESTful。目前我已经开始使用 MVC 设计模式进行编码。视图文件在其中充当接口。一个不显示任何图形用户界面但具有所有请求处理逻辑的界面。
现在,我的问题是我编码的方式是正确的还是有更好的方法在 php 中创建 RESTful api?
我的灵感来自于 JavaEE 应用模型。其中我们有实体类作为模型,Java bean 作为控制器,远程接口是从客户端调用的方法列表(一种视图)。
我在正确的轨道上吗?
我正在用 php 开发 RESTful。目前我已经开始使用 MVC 设计模式进行编码。视图文件在其中充当接口。一个不显示任何图形用户界面但具有所有请求处理逻辑的界面。
现在,我的问题是我编码的方式是正确的还是有更好的方法在 php 中创建 RESTful api?
我的灵感来自于 JavaEE 应用模型。其中我们有实体类作为模型,Java bean 作为控制器,远程接口是从客户端调用的方法列表(一种视图)。
我在正确的轨道上吗?
在基于 PHP 的 MVC 框架中构建 RESTful API 的一个很好的例子可以在http://www.chrisdanielson.com/2009/09/02/creating-a-php-rest-api-using-the-zend-找到框架/ .
这个例子扩展了 Zend Framework 中一个名为 Zend_Rest_Controller 的类,它简化了这个过程。您可以查看源代码以了解它们是如何做到的,以及它是否为您提供了如何制作自己的实现的想法。
不过,要回答您的问题,您应该将控制器用作接口。因此,如果您向 myapp.com/comment(comment 是控制器)发送 POST 请求,它就知道您正在尝试添加新评论。如果您向同一个 URL 发送 GET 请求,它知道您想要所有评论,如果您向 myapp.com/comment/4 发送 GET 请求,它知道您想要获取 ID 为 4 的评论。您的视图应该与您的 API 的内部功能无关。
您可以使用任何现有的 RESTful PHP MVC 框架,例如 Yii 或 Kohana,它们都非常轻量级并且原生支持 RESTful 应用程序。
对于您现有的应用程序,MVC 模型声明所有请求和逻辑处理都应该由控制器而不是视图来完成。事情通常在这里以两种方式之一完成:
(1)Controller有一个特殊的方法来响应每种类型的请求,并且行为不同如RubyOnRails中所见(主要是在每个控制器动作的末尾)
respond_to do |format|
format.html
format.xml { render :xml => @events}
format.json { render :json => @events}
end
(2) 控制器检测当前请求的格式并将整个主题/布局更改为 JSON 主题(所有布局/视图接收相同的数据)。这是我当前的实现,它就像:
$format is any of [html,json,xml] (detected from url suffix)
$controller->layout = "$format";
$controller->render($viewFile, $object);
在 HTML 布局中查看文件
<div id='model>
<h1><?=$object->title?></h1>
<p><?=$object->description?></p>
</div>
以 JSON 布局查看文件
echo json_encode($object);
以 XML 布局查看文件
/** Loop and build XML tree */
Apigility 是一个基于 Zend Framework 2 的项目,专门设计用于创建 REST 和 RPC 服务。
开箱即用,您可以轻松地开始使用 MySQL 和 OAuth2 进行身份验证。
我做了一堆关于 API 外观设计模式的网络研讨会。希望无论您使用何种底层技术来实现这些概念,您都会发现这些概念很有用。请在这里找到