我正在使用laravel在我的公司构建一个api。
我遇到的问题是,如果你发送一个api请求,而没有为请求定义正确的头部,那么如果出现失败,例如授权失败或findOrFail()失败,你就会得到html。
我的想法是,你永远不会想要返回html (即使用户有错误的标题)。
我有几个解决方案。在BeforeMiddleware.php中,我可以手动将头部插入到请求中,例如:
// Check if we are on an api route
$apiRoute = strncmp($uri, '/api/', 5) == 0;
// Insert the request header to force json response
if ($apiRoute){
$language = $request->header->add('Accept', 'application/json');
}第二个解决方案是如果它们没有正确的头,就抛出一个错误。
强制json响应的最佳方式是什么?在laravel中处理api响应的好实践是什么?
发布于 2018-08-29 15:46:12
一旦你检测到你在你的api路径上,你就走出了困境,并且确实可以像How do you force a JSON response on every response in Laravel?上建议的那样在app\Exceptions\Handler.php文件中解决你的问题。
对于一个开放源码项目,我以微软格式创建了JSON异常对象作为输出,但您可以随意选择jsonapi格式(http://jsonapi.org/examples/#error-objects-basics):https://github.com/StadGent/laravel_site_opening-hours/blob/develop/app/Exceptions/Handler.php (注意,在此实现中,它确实取决于标头,但我认为您可以使用路径检测)
https://stackoverflow.com/questions/49681965
复制相似问题