在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 相关文章推荐
codeigniter中测试通过的分页类示例
Apr 17 PHP
个人写的PHP验证码生成类分享
Aug 21 PHP
thinkphp3.0输出重复两次的解决方法
Dec 19 PHP
PHP实现通过正则表达式替换回调的内容标签
Jun 15 PHP
Ubuntu下安装PHP的mongodb扩展操作命令
Jul 04 PHP
PHP载入图像imagecreatefrom_gif_jpeg_png系列函数用法分析
Nov 14 PHP
thinkPHP简单调用函数与类库的方法
Mar 15 PHP
php图片合成方法(多张图片合成一张)
Nov 25 PHP
PHP排序算法之直接插入排序(Straight Insertion Sort)实例分析
Apr 20 PHP
php使用filter_var函数判断邮箱,url,ip格式示例
Jul 06 PHP
Laravel 模型关联基础教程详解
Sep 17 PHP
PHP设计模式之命令模式示例详解
Dec 20 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操作SVN版本服务器类代码
2011/11/27 PHP
php去掉URL网址中带有PHPSESSID的配置方法
2014/07/08 PHP
PHP中把对象转换为关联数组代码分享
2015/04/09 PHP
微信支付开发动态链接Native支付
2016/07/12 PHP
搜索附近的人PHP实现代码
2018/02/11 PHP
Yii2框架配置文件(Application属性)与调试技巧实例分析
2019/05/27 PHP
PHP单文件上传原理及上传函数的封装操作示例
2019/09/02 PHP
php+js实现的拖动滑块验证码验证表单操作示例【附源码下载】
2020/05/27 PHP
jQuery控制iFrame(实例代码)
2013/11/19 Javascript
Jquery实现的角色左右选择特效
2014/05/21 Javascript
jquery实现两个图片渐变切换效果的方法
2015/06/25 Javascript
JS实现兼容性好,带缓冲的动感网页右键菜单效果
2015/09/18 Javascript
vue-resource 拦截器使用详解
2017/02/21 Javascript
JavaScript装饰器函数(Decorator)实例详解
2017/03/30 Javascript
Angular4表单验证代码详解
2017/09/03 Javascript
微信小程序中遇到的iOS兼容性问题小结
2018/11/14 Javascript
JS+php后台实现文件上传功能详解
2019/03/02 Javascript
JavaScript进制转换实现方法解析
2020/01/18 Javascript
微信小程序的引导页实现代码
2020/06/24 Javascript
[47:08]OG vs INfamous 2019国际邀请赛小组赛 BO2 第一场 8.15
2019/08/17 DOTA
Python实现大文件排序的方法
2015/07/10 Python
Python对字符串实现去重操作的方法示例
2017/08/11 Python
Python实现上下班抢个顺风单脚本
2018/02/07 Python
利用python将图片版PDF转文字版PDF
2019/05/03 Python
如何使用python进行pdf文件分割
2019/11/11 Python
使用Pandas的Series方法绘制图像教程
2019/12/04 Python
Python可以实现栈的结构吗
2020/05/27 Python
Prometheus开发中间件Exporter过程详解
2020/11/30 Python
南京某公司笔试题
2013/01/27 面试题
酒店保安员岗位职责
2014/01/31 职场文书
灰雀教学反思
2014/04/28 职场文书
县人大领导班子四风对照检查材料思想汇报
2014/10/09 职场文书
2015秋学期开学寄语
2015/05/28 职场文书
高中团支书竞选稿
2015/11/21 职场文书
Flask搭建一个API服务器的步骤
2021/05/28 Python
python在package下继续嵌套一个package
2022/04/14 Python