Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/laravel/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 在Laravel Homestead上运行的两个本地项目之间测试API调用_Php_Laravel_Laravel 5.2 - Fatal编程技术网

Php 在Laravel Homestead上运行的两个本地项目之间测试API调用

Php 在Laravel Homestead上运行的两个本地项目之间测试API调用,php,laravel,laravel-5.2,Php,Laravel,Laravel 5.2,我正在尝试使用GuzzleHttp从projectA向projectB发出POST请求。这两个项目都在同一个宅地实例上运行。问题是端点没有获得请求 Windows承载文件: 192.168.10.10 projectA.local 192.168.10.10 projectB.local projectA中的GuzzleHttp调用: $this->httpClient = new Client(array( 'base_uri' => 'http://projectB.l

我正在尝试使用GuzzleHttp从projectA向projectB发出POST请求。这两个项目都在同一个宅地实例上运行。问题是端点没有获得请求

Windows承载文件:

192.168.10.10 projectA.local
192.168.10.10 projectB.local
projectA中的GuzzleHttp调用

$this->httpClient = new Client(array(
    'base_uri' => 'http://projectB.local/api/'
));

$response = $this->httpClient->post('create-user', array('form_params' => $this->params));

return $response->getStatusCode();
在项目B中调试:

public function createUser(Request $request) {
    Logger::debug('API call received'); // custom logging of the call in the database
}
现在,此API调用从未记录在数据库中projectA发送请求,但projectB没有收到。

我确认的内容:

public function createUser(Request $request) {
    Logger::debug('API call received'); // custom logging of the call in the database
}
  • $this->params
    已设置并正确(这些是POST参数)
  • 端点URI是正确的()
  • 端点存在于projectB中,可以访问并响应POST
  • 响应状态代码为
    200
我错过了什么?难道不能从另一个宅地项目中调用一个宅地项目吗


更新-来自Homestead的配置

/etc/hosts

127.0.0.1       homestead       homestead
127.0.0.1       localhost
127.0.1.1       vagrant.vm      vagrant
::1     localhost ip6-localhost ip6-loopback
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
/etc/resolv.conf

# Dynamic resolv.conf(5) file for glibc resolver(3) generated by resolvconf(8)
#     DO NOT EDIT THIS FILE BY HAND -- YOUR CHANGES WILL BE OVERWRITTEN
nameserver 10.0.2.3
> grep hosts /etc/nsswitch.conf
> hosts:          files dns
/etc/nsswitch.conf

# Dynamic resolv.conf(5) file for glibc resolver(3) generated by resolvconf(8)
#     DO NOT EDIT THIS FILE BY HAND -- YOUR CHANGES WILL BE OVERWRITTEN
nameserver 10.0.2.3
> grep hosts /etc/nsswitch.conf
> hosts:          files dns
主机检查

> host projectB.local
> Host projectB.local not found: 4(NOTIMP)
> Host projectB.local not found: 4(NOTIMP)

好的,我开始认为可能是在到达端点之前破坏了API调用。我在每个请求上都运行一些全局中间件(例如,
VerifyCsrfToken
one)

我确保我的端点路径被排除在中间件的处理之外,就是这样:

if (!$request->is('api/*)) {
    // handle...
}
具体而言,在
VerifyCsrfToken
中间件中,您可以使用提供的字段:

protected $except = [
    'api/*'
];

听起来很明显,现在几乎让人恶心。

你能展示一下你的虚拟主机配置吗?@VaheGalstyan当然。更新了帖子。