在Laravel中使用GuzzleHttp调用第三方服务的API接口代码


Posted in PHP onOctober 15, 2019

背景:用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接口了

以上这篇在Laravel中使用GuzzleHttp调用第三方服务的API接口代码就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

PHP 相关文章推荐
使用session判断用户登录用户权限(超简单)
Jun 08 PHP
php计算当前程序执行时间示例
Apr 24 PHP
PHP数组遍历知识汇总(包含遍历方法、数组指针操作函数、数组遍历测速)
Jul 05 PHP
PHP快速生成各种信息提示框的方法
Feb 03 PHP
是 WordPress 让 PHP 更流行了 而不是框架
Feb 03 PHP
php通过两层过滤获取留言内容的方法
Jul 11 PHP
PDO::errorCode讲解
Jan 28 PHP
PHP模糊查询技术实例分析【附源码下载】
Mar 07 PHP
thinkPHP5.1框架路由::get、post请求简单用法示例
May 06 PHP
thinkphp5实现微信扫码支付
Dec 23 PHP
PHP如何使用JWT做Api接口身份认证的实现
Feb 03 PHP
php去除数组中为0的元素的实例分析
Nov 17 PHP
解决在laravel中auth建立时候遇到的问题
Oct 15 #PHP
使用 PHP Masked Package 屏蔽敏感数据的实现方法
Oct 15 #PHP
解决laravel 表单提交-POST 异常的问题
Oct 15 #PHP
浅谈PHP array_search 和 in_array 函数效率问题
Oct 15 #PHP
浅谈Laravel POST,PUT,PATCH 路由的区别
Oct 15 #PHP
laravel 解决ajax异步提交数据,并还回填充表格的问题
Oct 15 #PHP
Laravel 不同生产环境服务器的判断实践
Oct 15 #PHP
You might like
坏狼的PHP学习教程之第2天
2008/06/15 PHP
php模板原理讲解
2013/11/13 PHP
浅析THINKPHP的addAll支持的最大数据量
2015/02/03 PHP
php图形jpgraph操作实例分析
2017/02/22 PHP
使用PHPStorm+XDebug搭建单步调试环境
2017/11/19 PHP
PHP pthreads v3下worker和pool的使用方法示例
2020/02/21 PHP
分享几个超级震憾的图片特效
2012/01/08 Javascript
JS判断对象是否存在的10种方法总结
2013/12/23 Javascript
推荐6款基于jQuery实现图片效果插件
2014/12/07 Javascript
javascript实现图片循环渐显播放的方法
2015/02/24 Javascript
JavaScript中Window对象的属性及事件
2015/12/25 Javascript
关于input全选反选恶心的异常情况
2016/07/24 Javascript
jQuery响应滚动条事件功能示例
2017/10/14 jQuery
Vue页面跳转动画效果的实现方法
2018/09/23 Javascript
如何对react hooks进行单元测试的方法
2019/08/14 Javascript
学前端,css与javascript重难点浅析
2020/06/11 Javascript
微信小程序将页面按钮悬浮固定在底部的实现代码
2020/10/29 Javascript
[15:35]教你分分钟做大人:天怒法师
2014/10/30 DOTA
Python中的exec、eval使用实例
2014/09/23 Python
从Python的源码来解析Python下的freeblock
2015/05/11 Python
python 实时遍历日志文件
2016/04/12 Python
pytorch 数据集图片显示方法
2018/07/26 Python
python tkinter canvas 显示图片的示例
2019/06/13 Python
树莓派使用python-librtmp实现rtmp推流h264的方法
2019/07/22 Python
Python lambda表达式filter、map、reduce函数用法解析
2019/09/11 Python
python 遗传算法求函数极值的实现代码
2020/02/11 Python
Python super()函数使用及多重继承
2020/05/06 Python
python 制作网站小说下载器
2021/02/20 Python
css3使用animation属性实现炫酷效果(推荐)
2020/02/04 HTML / CSS
HTML5中使用postMessage实现两个网页间传递数据
2016/06/22 HTML / CSS
Paradox London官方网站:英国新娘鞋婚礼鞋品牌
2019/08/29 全球购物
Java面向对象面试题
2016/12/26 面试题
会计电算化个人自我评价
2013/11/17 职场文书
大学生党员自我评价范文
2014/04/09 职场文书
建筑节能汇报材料
2014/08/22 职场文书
CSS 鼠标选中文字后改变背景色的实现代码
2023/05/21 HTML / CSS