【发布时间】:2020-01-14 16:07:19
【问题描述】:
我的 web.php 中有一条返回视图的路由:
Route::get('/', function () {
return view('welcome');
});
welcome 是 Laravel 默认的视图welcome.blade.php。
我有一个名为 AlwaysReturnJson 的中间件,它包含:
<?php
namespace App\Http\Middleware;
use Closure;
class AlwaysReturnJson
{
/**
* Handle an incoming request.
*
* @param \Illuminate\Http\Request $request
* @param \Closure $next
* @return mixed
*/
public function handle($request, Closure $next)
{
$request->headers->set('Accept', 'application/json');
return $next($request);
}
}
我在 Kernel.php 中将这个中间件设置为全局中间件:
protected $middleware = [
\App\Http\Middleware\AlwaysReturnJson::class
];
当我导航到给定路线时,我希望在浏览器中获得欢迎文件的纯文本/json,但我总是将它作为 html 获取,并且它可以正确呈现页面。我检查了它,它对每个请求都应用中间件,所以这不是问题。为什么会发生这种情况,它不应该将该视图转换为纯文本吗?我做错了吗?
【问题讨论】:
-
@AngadDubey 这里没有控制器。 OP 使用闭包返回视图
-
尝试将视图返回为 json 响应
return response()->json([ 'welcome' => view('welcome') ]); -
@N.Dockic 我正在尝试使用您的方式并取得成功。我认为这不是 Laravel 问题,而是网络服务器。
-
您正在设置一个
Accept标头,这更像是在说:“始终接受 json”。 -
@WahyuKristianto 你能给我指导一下服务器可能出现的问题吗?
标签: laravel nginx laravel-6 php-7.3