我在我自己的项目中访问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
我错过了什么?
答案 0 :(得分:2)
Request::create()
是继承自Symfony的HTTP Request类的方法。如果您未传递任何$_SERVER
详细信息,请it will use reasonable defaults。
UrlGenerator
Laravel类在调用route()
等函数时使用当前的Request来确定完全限定的域名。由于您没有告诉请求当前域是什么,因此它将恢复为localhost
。
如果您在$_SERVER
填充了正确信息的环境中,您可以将其传递给正确的参数:
Request::create(
'/api/auth/login',
'POST',
[
'user' => $request->user,
'password' => $request->password,
],
[], // cookies
[], // files
$_SERVER
);
其他可能适合的潜在解决方案:
Request::createFromGlobals()
使用PHP的超级全局(例如$_POST
,$_SERVER
等)填充请求,然后修改要更改的部分。$request
变量已经拥有Laravel Request实例,则可以调用$request->duplicate()
。再次,根据需要进行修改。