我在api路线文件中有这条路线
Route::post('/user/register', 'HomeController@register');
并且寄存器功能是
public function register(Request $request)
{
$user = User::create([
...
]);
return $this->getAccessToken($request);
}
public function getAccessToken(Request $request)
{
$url = url('/oauth/token');
$headers = ['Accept' => 'application/json'];
$http = new Client;
$response = $http->post($url, [
'headers' => $headers,
'form_params' => [
'grant_type' => 'password',
'client_id' => 'my_client_id',
'client_secret' => 'my_client_secret',
'username' => 'username',
'password' => 'password'
],
]);
return json_decode((string)$response->getBody(), true);
}
现在当我向url发送post请求时,用户已创建,但请求继续加载且没有响应,整个应用程序挂起,直到我关闭IDE - phpstorm -
我将相同的参数发送到邮递员的同一个网址/oauth/token
,它运行正常。
任何帮助或任何人告诉我我错过了什么?
答案 0 :(得分:1)
当网址包含像
这样的端口时,问题是 curl 不起作用本地主机:8000
答案 1 :(得分:0)
在Stack Overflow上看到这个问题:
Why does file_get_contents work with google.com but not with my site?
对于任何使用PHP内置Web服务器(使用 Laravel在我的情况下),它是由你的请求被阻止引起的 file_get_contents()/ curl functions。
开发服务器的文档说
PHP applications will stall if a request is blocked.
由于PHP内置服务器是单线程的,因此请求另一个 服务器上的url将暂停第一个请求,并且它会超时。
作为解决方案,您可以使用nginx(LEMP堆栈)或其他Web服务器。
编辑:截至目前,我真的建议您使用Homestead作为开发 PHP项目的环境。它为您节省了大量的工作 配置,创建虚拟主机和数据库配置以获取更多信息 项目