在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 相关文章推荐
php error_log 函数的使用
Apr 13 PHP
Ajax+PHP边学边练 之五 图片处理
Dec 03 PHP
PHP array 的加法操作代码
Jul 24 PHP
php使用ob_start()实现图片存入变量的方法
Nov 14 PHP
PHP实现的简易版图片相似度比较
Jan 07 PHP
PHP中的traits实现代码复用使用实例
May 13 PHP
smarty中改进truncate使其支持中文的方法
May 30 PHP
基于php判断客户端类型
Oct 14 PHP
解决安装WampServer时提示缺少msvcr110.dll文件的问题
Jul 09 PHP
YII框架学习笔记之命名空间、操作响应与视图操作示例
Apr 30 PHP
Laravel5.1 框架Middleware中间件基本用法实例分析
Jan 04 PHP
PHP使用Http Post请求发送Json对象数据代码解析
Jul 16 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
推荐几部必看的DC动画电影
2020/03/03 欧美动漫
Discuz 模板语句分析及知识技巧
2009/08/21 PHP
php 实现进制转换(二进制、八进制、十六进制)互相转换实现代码
2010/10/22 PHP
PHP怎么实现网站保存快捷方式方便用户随时浏览
2013/08/15 PHP
php使用curl简单抓取远程url的方法
2015/03/13 PHP
mod_php、FastCGI、PHP-FPM等PHP运行方式对比
2015/07/02 PHP
自写的利用PDO对mysql数据库增删改查操作类
2018/02/19 PHP
PHP智能识别收货地址信息实例
2019/01/05 PHP
仿中关村在线首页弹出式广告插件(jQuery版)
2012/05/03 Javascript
nodeType属性返回被选节点的节点类型介绍
2013/11/22 Javascript
JS图像无缝滚动脚本非常好用
2014/02/10 Javascript
javascript实现日期时间动态显示示例代码
2015/09/08 Javascript
jquery插件pagination实现无刷新ajax分页
2015/09/30 Javascript
js判断日期时间有效性的方法
2015/10/24 Javascript
js为什么不能正确处理小数运算?
2015/12/29 Javascript
jQuery控制li上下循环滚动插件用法实例(附demo源码下载)
2016/05/28 Javascript
浅谈angularjs module返回对象的坑(推荐)
2016/10/21 Javascript
微信小程序实现滑动删除效果
2017/05/19 Javascript
vue.js语法及常用指令
2017/10/29 Javascript
使用mock.js随机数据和使用express输出json接口的实现方法
2018/01/07 Javascript
JS常见DOM节点操作示例【创建 ,插入,删除,复制,查找】
2018/05/14 Javascript
JavaScript fetch接口案例解析
2018/08/30 Javascript
Python实现的一个简单LRU cache
2014/09/26 Python
python实现的简单抽奖系统实例
2015/05/22 Python
使用python的pandas为你的股票绘制趋势图
2019/06/26 Python
python烟花效果的代码实例
2020/02/25 Python
简单了解python shutil模块原理及使用方法
2020/04/28 Python
CSS3媒体查询Media Queries基础学习教程
2016/02/29 HTML / CSS
5分钟弄清楚html5的drag and drop(小结)
2019/04/10 HTML / CSS
英国领先的奢侈品零售商之一:CRUISE
2016/12/02 全球购物
财务会计专业毕业生自荐信
2013/10/19 职场文书
家长会主持词开场白
2014/03/18 职场文书
工作保证书范文
2014/04/29 职场文书
城管大队整治方案
2014/05/06 职场文书
获奖感言一句话
2015/07/31 职场文书
2016年“我们的节日·中秋节”活动总结
2016/04/05 职场文书