我正在构建一个 json api。通过 routing.yml 配置文件可以很好地管理格式:
user_info:
url: /users/:user_id
class: sfRequestRoute
param: { module: user, action: details, sf_format: json }
requirements:
user_id: \d+
sf_method: [GET]
现在我想确保发送到我的应用程序的任何请求都将以 json 格式返回结果(例如:“/dummy”应该在 json 中返回错误)。我在同一个文件的末尾使用以下默认路线走上正轨:
default:
url: /*
param: { sf_format: json }
当我路由到一个不存在的页面或模块时,这会正确呈现一个 json... 错误!生成的 html 页面是 404,现在使用此路由我得到 500(服务器错误)。如何保持与默认 html 页面中的行为类似的行为,只需将呈现更改为 json 输出?
编辑 - 遵循 1Ed 说明
所以我编辑了我的 factory.yml,在我的 api 项目中创建了一个默认模块,在我的默认操作中添加了下面提到的 executeError404 函数......然后我设置了相应的 Error404Success.php 页面......
出于某种原因,我仍然需要路由,我对其进行了修改以避免 :module 和 :action 关键字:
default_index:
url: /:a
default:
url: /:a/:b/*
我在这里!我的 404 页面为整个 api 的 json 格式 :) 非常感谢!