在Laravel中使用GuzzleHttp调用第三方服务的API接口代码
发布:smiling 来源: PHP粉丝网 添加日期:2022-01-05 11:41:22 浏览: 评论:0
今天小编就为大家分享一篇在Laravel中使用GuzzleHttp调用第三方服务的API接口代码,具有很好的参考价值,希望对大家有所帮助,一起跟随小编过来看看吧。
背景:用laravel进行分布式开发,自己写了一个业务系统,还写了一个用户中心和其他的信息中心
现在需要做到前端只需要访问业务系统的API接口也可以获取到其他服务上面的数据
找了很多资料,最后查到了Laravel自带的GuzzleHttp可以达到我的需求
Guzzle中文文档:
http://guzzle-cn.readthedocs.io/zh_CN/latest/index.html
引入安装
在composer.json文件的“require”项中加入
"guzzlehttp/guzzle": "^6.3",
然后命令行执行composer install
在项目中的具体用法:
1、在项目某个地方,我选择的是在app/Http/Services目录下面新建一个APIHelper
- <?php
- namespace App\Http\Services;
- class APIHelper
- {
- public function post($body,$apiStr)
- {
- $client = new \GuzzleHttp\Client(['base_uri' => 'http://192.168.31.XX:xxx/api/']);
- $res = $client->request('POST', $apiStr,
- ['json' => $body,
- 'headers' => [
- 'Content-type'=> 'application/json',
- // 'Cookie'=> 'XDEBUG_SESSION=PHPSTORM',
- "Accept"=>"application/json"]
- ]);
- $data = $res->getBody()->getContents();
- return $data;
- }
- public function get($apiStr,$header)
- {
- $client = new \GuzzleHttp\Client(['base_uri' => 'http://192.168.31.XX:xxx/api/']);
- $res = $client->request('GET', $apiStr,['headers' => $header]);
- $statusCode= $res->getStatusCode();
- $header= $res->getHeader('content-type');
- $data = $res->getBody();
- return $data;
- }
- }
在项目中主要我用的是post方法,
'Cookie'=> 'XDEBUG_SESSION=PHPSTORM',
这一行加进去之后可以使用XDebug进行调试,但是在真正用起来的时候不需要在header里面加这一行了
如果是调用https接口,如果有证书问题,则加入这两项'verify' => '/full/path/to/cert.pem','verify' => false,不验证证书。
- public static function post_user($body,$apiStr)
- {
- $client = new \GuzzleHttp\Client(['verify' => '/full/path/to/cert.pem','base_uri' => 'http://xxx.xxx.com/api/']);
- $res = $client->request('POST', $apiStr,
- ['verify' => false,
- 'json' => $body,
- 'headers' => [
- 'Content-type'=> 'application/json']
- ]);
- $data = $res->getBody()->getContents();
- $response=json_decode($data);
- return $response;
- }
2、具体在Controller中使用
- public function index(Request $request)
- {
- $data = $request->json()->all();
- $body = $data;
- $apiStr = '/api/xxx/list';
- $api = new APIHelper();
- $res =$api->post($body,$apiStr);
- $data = json_decode($res);
- $ret=new RetObject();
- $ret->retCode='0000';
- $ret->retMsg='Success';
- $ret->data=$data;
- return response()->json($ret);
- }
这样就可以在一个系统里用GuzzleHttp调用第三方的API接口了。
Tags: Laravel GuzzleHttp API接口
相关文章
- ·Laravel 5.6中的CURD操作(代码示例详解)(2020-01-15)
- ·如何在laravel 5中创建用于XSS防御的中间件? (2020-01-16)
- ·关于Laravel重定向的七种方法详解(2020-01-26)
- ·如何在laravel 5中使用DB事务?(2020-01-31)
- ·Laravel中如何给图片加水印?(2020-04-05)
- ·Laravel框架数据库CURD操作、连贯操作总结(2021-04-10)
- ·Laravel框架路由配置总结、设置技巧大全(2021-04-10)
- ·Laravel框架中扩展函数、扩展自定义类的方法(2021-04-10)
- ·跟我学Laravel之快速入门(2021-04-16)
- ·跟我学Laravel之安装Laravel(2021-04-16)
- ·跟我学Laravel之配置Laravel(2021-04-16)
- ·跟我学Laravel之请求(Request)的生命周期(2021-04-16)
- ·跟我学Laravel之路由(2021-04-16)
- ·跟我学Laravel之请求与输入(2021-04-17)
- ·跟我学Laravel之视图 & Response(2021-04-17)
- ·laravel安装和配置教程(2021-04-19)
推荐文章
热门文章
最新评论文章
- 写给考虑创业的年轻程序员(10)
- PHP新手上路(一)(7)
- 惹恼程序员的十件事(5)
- PHP邮件发送例子,已测试成功(5)
- 致初学者:PHP比ASP优秀的七个理由(4)
- PHP会被淘汰吗?(4)
- PHP新手上路(四)(4)
- 如何去学习PHP?(2)
- 简单入门级php分页代码(2)
- php中邮箱email 电话等格式的验证(2)