当你在编写完全为 api 服务的 laravel 应用时,你希望所有响应都是 json 格式的,而不是例如说授权错误会重定向到 /home 或 /login,最终重定向会变成 invalidargumentexception: route [login] is not defined. 的视图。
推荐教程:《laravel教程》
下面这个简单的方案,可以让你的 laravel 应用优先响应为 json 格式。
第一步、编写 baserequest
首先我们需要构建一个 baserequest 来重写 illuminate\http\request ,修改为默认优先使用 json 响应:
app/http/requests/baserequest.php
<?phpnamespace app\http\requests;use illuminate\http\request;class baserequest extends request{ public function expectsjson() { return true; } public function wantsjson() { return true; }}
第二步、替换 baserequest
在 public/index.php 文件中,将 \illumiate\http\request 替换为我们的 baserequest,如下:
$response = $kernel->handle( $request = \app\http\requests\baserequest::capture());
搞定!
现在所有的响应都是 application/json ,包括错误和异常。
来自于社区 https://learnku.com/laravel/wikis/16069
以上就是让 laravel api 永远返回 json 格式响应的详细内容。