我在自己的项目中访问api,但是现在route函数出现问题了,在用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我错过了什么?
发布于 2018-06-05 21:56:13
Request::create()是从Symfony的HTTP类继承的方法。调用时,如果不传递任何$_SERVER详细信息,则为它将使用合理的缺省值。。
UrlGenerator Laravel类在调用函数(如route() )时使用当前请求来确定完全限定的域名。由于您没有告诉请求当前域是什么,所以它将恢复为localhost。
如果您所处的环境中$_SERVER填充了适当的信息,则可以将其传递给适当的参数:
Request::create(
'/api/auth/login',
'POST',
[
'user' => $request->user,
'password' => $request->password,
],
[], // cookies
[], // files
$_SERVER
);其他可能适合的解决办法:
Request::createFromGlobals()将请求填充到$_POST、$_SERVER等超级全局,然后修改要更改的部分。$request变量已经保存了Laravel实例,则可以调用$request->duplicate()。再一次,根据需要修改。https://stackoverflow.com/questions/50705869
复制相似问题