在编写控制器时,让单个动作响应多种响应格式是否有任何陷阱?AFAIK,Rails 使用 'respond_to' 执行此操作,但在 PHP 中找不到类似的东西。提供创建“REST”控制器工具的框架(例如 Laravel)只关注 REST API,从而分离出“UI”控制器。所以,想知道这是否不可取。
另外,在编写这样的控制器动作时要考虑哪些要点(如果这不是一个坏习惯)?我想到的几件事是缓存和不同格式的不同输出字段。还有什么我应该考虑的吗?
在编写控制器时,让单个动作响应多种响应格式是否有任何陷阱?AFAIK,Rails 使用 'respond_to' 执行此操作,但在 PHP 中找不到类似的东西。提供创建“REST”控制器工具的框架(例如 Laravel)只关注 REST API,从而分离出“UI”控制器。所以,想知道这是否不可取。
另外,在编写这样的控制器动作时要考虑哪些要点(如果这不是一个坏习惯)?我想到的几件事是缓存和不同格式的不同输出字段。还有什么我应该考虑的吗?
MVC 中的控制器负责更改模型层的状态,并且在极少数情况下 - 负责更改当前视图状态。当然,如果你以 Rails 或 Laravel 为例,你没有 MVC。
响应的格式应由观点决定。
至于 POST/GET/PUT/DELETE - 根据我的经验,最好将请求方法作为控制器操作(如getArticle( $request )
、putArticle( $request )
等)中的前缀,因为这样可以避免使用多个早午餐if
语句进行操作。
据我所知,CakePHP 所做的正是 Rails 所做的。只需添加Router::parseExtensions('json')
到您的路由文件并RequestHandlerComponent
在您的控制器中启用。1
您可以通过例如读取 Accept 标头并相应地响应几乎所有框架来做到这一点。