4

我正在用 php 开发 RESTful。目前我已经开始使用 MVC 设计模式进行编码。视图文件在其中充当接口。一个不显示任何图形用户界面但具有所有请求处理逻辑的界面。

现在,我的问题是我编码的方式是正确的还是有更好的方法在 php 中创建 RESTful api?


我的灵感来自于 JavaEE 应用模型。其中我们有实体类作为模型,Java bean 作为控制器,远程接口是从客户端调用的方法列表(一种视图)。


我在正确的轨道上吗?

4

4 回答 4

1

在基于 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 的内部功能无关。

于 2012-06-16T00:38:48.943 回答
1

您可以使用任何现有的 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 */
于 2012-06-16T00:59:51.313 回答
0

Apigility 是一个基于 Zend Framework 2 的项目,专门设计用于创建 REST 和 RPC 服务。

https://apigility.org/

开箱即用,您可以轻松地开始使用 MySQL 和 OAuth2 进行身份验证。

于 2014-11-18T23:17:06.053 回答
0

我做了一堆关于 API 外观设计模式的网络研讨会。希望无论您使用何种底层技术来实现这些概念,您都会发现这些概念很有用。请在这里找到

http://youtu.be/n8B-K3iJ7b4

http://youtu.be/MRxTP-rQ-S8

http://youtu.be/aJBhVm4BbCI

于 2012-12-27T07:18:06.207 回答