Php 在Laravel Homestead上运行的两个本地项目之间测试API调用
我正在尝试使用GuzzleHttp从projectA向projectB发出POST请求。这两个项目都在同一个宅地实例上运行。问题是端点没有获得请求 Windows承载文件: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
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
}
已设置并正确(这些是POST参数)$this->params
- 端点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当然。更新了帖子。