用于 HTML 和 JSON 结果的单个控制器


Single Controller for HTML and JSON results

在编写控制器时,让单个操作响应多种响应格式是否存在任何陷阱?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 标头并相应地做出响应来使用几乎所有框架来做到这一点。