Php 应用程序()后更改Laravel路由url->;handle()函数

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

我正在访问自己项目中的api,但现在我遇到了
路由
函数的问题,在使用
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()
。太棒了!非常感谢。