Php 应用程序()后更改Laravel路由url->;handle()函数
我正在访问自己项目中的api,但现在我遇到了Php 应用程序()后更改Laravel路由url->;handle()函数,php,laravel,routes,Php,Laravel,Routes,我正在访问自己项目中的api,但现在我遇到了路由函数的问题,在使用app()->handle($req)调度请求后,路由函数生成了一个不同的url $req = Request::create('/api/auth/login', 'POST', [ "user" => $request->user, "password" => $request->password, ]); $redirect = route('h
路由
函数的问题,在使用app()->handle($req)
调度请求后,路由函数生成了一个不同的url
$req = Request::create('/api/auth/login', 'POST', [
"user" => $request->user,
"password" => $request->password,
]);
$redirect = route('home'); // http://127.0.0.1:8000/home
$res = app()->handle($req);
$redirect = route('home'); // http://localhost/home
我错过了什么?请求::create()是从Symfony的HTTP请求类继承的方法。调用时,如果未传入任何$\u服务器详细信息
调用函数时,UrlGenerator
Laravel类使用当前请求确定完全限定的域名,如route()
。由于您没有告诉请求当前域是什么,因此它将恢复为localhost
如果您所处的环境中,$\u SERVER
填充了正确的信息,则可以将其传递给正确的参数:
Request::create(
'/api/auth/login',
'POST',
[
'user' => $request->user,
'password' => $request->password,
],
[], // cookies
[], // files
$_SERVER
);
其他可能适合的解决方案:
- 使用
Request::createFromGlobals()
用PHP的超全局变量(如$\u POST
,$\u SERVER
等)填充请求,然后修改要更改的部分
- 如果
$request
变量已经包含一个Laravel请求实例,则可以调用$request->duplicate()
。再次,根据需要进行修改
代码是否用于测试?好奇你为什么直接调用app()->handle()
。太棒了!非常感谢。