在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之第六天
Oct 09 PHP
PHP新手上路(十)
Oct 09 PHP
php模板函数 正则实现代码
Oct 15 PHP
关于crontab的使用详解
Jun 24 PHP
php实现的一个很好用HTML解析器类可用于采集数据
Sep 23 PHP
php采用curl实现伪造IP来源的方法
Nov 21 PHP
PHP获取数组中单列值的方法
Jun 10 PHP
PHP开发的微信现金红包功能示例
Jun 29 PHP
PHP实现搜索时记住状态的方法示例
May 11 PHP
ThinkPHP实现的rsa非对称加密类示例
May 29 PHP
PHP生成随机字符串实例代码(字母+数字)
Sep 11 PHP
php设计模式之原型模式分析【星际争霸游戏案例】
Mar 23 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中计算时间差的几种方法
2009/12/31 PHP
如何阻止网站被恶意反向代理访问(防网站镜像)
2014/03/18 PHP
php5.x禁用eval的操作方法
2018/10/19 PHP
Javascript 原型和继承(Prototypes and Inheritance)
2009/04/01 Javascript
js鼠标左右键 键盘值小结
2010/06/11 Javascript
基于jQuery的message插件实现右下角弹出消息框
2011/01/11 Javascript
js动态设置div的值下例子
2013/10/29 Javascript
原生JS可拖动弹窗效果实例代码
2013/11/09 Javascript
移动节点的jquery代码
2014/01/13 Javascript
javascript 小数取整简单实现方式
2014/05/30 Javascript
浅谈js中变量初始化
2015/02/03 Javascript
JS组件Bootstrap导航条使用方法详解
2016/04/29 Javascript
jQuery简单自定义图片轮播插件及用法示例
2016/11/21 Javascript
基于Bootstrap和jQuery构建前端分页工具实例代码
2016/11/23 Javascript
webpack 3.X学习之多页面打包的方法
2018/09/04 Javascript
Vue.js自定义指令学习使用详解
2019/10/19 Javascript
element-ui如何防止重复提交的方法步骤
2019/12/09 Javascript
微信小程序scroll-view的滚动条设置实现
2020/03/02 Javascript
python两种遍历字典(dict)的方法比较
2014/05/29 Python
详解Python开发中如何使用Hook技巧
2017/11/01 Python
详解python里的命名规范
2018/07/16 Python
Python实现钉钉/企业微信自动打卡的示例代码
2021/02/02 Python
html5 canvas里绘制椭圆并保持线条粗细均匀的技巧
2013/03/25 HTML / CSS
美体小铺奥地利官方网站:The Body Shop奥地利
2019/04/11 全球购物
abstract class和interface有什么区别?
2012/01/03 面试题
京剧自荐信
2014/01/26 职场文书
工程开工庆典邀请函
2014/02/01 职场文书
主题实践活动总结
2014/05/08 职场文书
党的群众路线教育实践活动宣传标语口号
2014/06/06 职场文书
授权委托书范本(单位)
2014/09/28 职场文书
个人事迹材料怎么写
2014/12/30 职场文书
2016年社区中秋节活动总结
2016/04/05 职场文书
看古人们是如何赞美老师的?
2019/07/08 职场文书
MySQL安装失败的原因及解决步骤
2022/06/14 MySQL
Java实现注册登录跳转
2022/06/16 Java/Android
Hive导入csv文件示例
2022/06/25 数据库