【发布时间】:2016-07-14 19:31:55
【问题描述】:
我正在与 laravel 5.2 中的网站一起构建 web api,当用户访问我的 web 上不可用的 url 时,如 http://stage.dev/unavailable/link 然后它会在错误视图资源上抛出 404 页面,然后我想以不同的方式捕获如果用户尝试使用http//stage.dev/api/v1/unavailable/link 等不可用 URL 访问我的 API,然后我想返回 json/xml 响应
{
'status' : 'not found',
'code' : 404,
'data' : []
}
不是视图,有没有办法通过 url 前缀 'api/*' 或如何检测它......,也许是另一种具有类似结果的方法,因此访问它的设备/客户端可以通过标准格式进行(我有所有 json 响应中的简单格式)
{
'status' : 'success|failed|restrict|...',
'api_id' : '...',
'token' : '...',
'data' : [
{'...' : '...'},
{'...' : '...'},
...
]
}
已解决
我在阅读Chris 和Alexey 的答案后发现了一些东西,这种方法对我有用,我在handler.php 的render() 方法中添加了几行,
if($e instanceof ModelNotFoundException || $this->isHttpException($e)) {
if($request->segment(1) == 'api' || $request->ajax()){
$e = new NotFoundHttpException($e->getMessage(), $e);
$result = collect([
'request_id' => uniqid(),
'status' => $e->getStatusCode(),
'timestamp' => Carbon::now(),
]);
return response($result, $e->getStatusCode());
}
}
我的标头请求响应 404 错误代码并返回我想要的 json 数据..
【问题讨论】:
-
如果已经解决,并且是您自己的意愿,请提交答案并标记为正确