在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语法(2)
Oct 09 PHP
PHP 递归效率分析
Nov 24 PHP
微盾PHP脚本加密专家php解密算法
Sep 13 PHP
国产PHP开发框架myqee新手快速入门教程
Jul 14 PHP
php获取CSS文件中图片地址并下载到本地的方法
Dec 02 PHP
使用PHP similar text计算两个字符串相似度
Nov 06 PHP
基于PHP制作验证码
Oct 12 PHP
详解PHP用substr函数截取字符串中的某部分
Dec 03 PHP
Yii2.0使用阿里云OSS的SDK上传图片、下载、删除图片示例
Sep 20 PHP
php实现的生成迷宫与迷宫寻址算法完整实例
Nov 06 PHP
PHP安装memcache扩展的步骤讲解
Feb 14 PHP
php的无刷新操作实现方法分析
Feb 28 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
linux下使用ThinkPHP需要注意大小写导致的问题
2011/08/02 PHP
基于php的CMS中展示文章类实例分析
2015/06/18 PHP
完美解决JS中汉字显示乱码问题(已解决)
2006/12/27 Javascript
checkbox 复选框不能为空
2009/07/11 Javascript
一些主流JS框架中DOMReady事件的实现小结
2011/02/12 Javascript
jquery默认校验规则整理
2014/03/24 Javascript
jQuery判断元素上是否绑定了指定事件的方法
2015/03/17 Javascript
Javascript中的getUTCDay()方法使用详解
2015/06/10 Javascript
BootStrap 超链接变按钮的实现方法
2016/09/25 Javascript
利用vue.js插入dom节点的方法
2017/03/15 Javascript
利用node.js写一个爬取知乎妹纸图的小爬虫
2017/05/03 Javascript
微信小程序报错:this.setData is not a function的解决办法
2017/09/27 Javascript
AngularJS表单验证功能
2017/10/19 Javascript
js实现动态改变radio状态的方法
2018/02/28 Javascript
Vue.js组件间通信方式总结【推荐】
2018/11/23 Javascript
[02:42]2014DOTA2国际邀请赛 三冰专访:我会打到Ti20
2014/07/13 DOTA
[03:24][TI9纪实] Dota奶爸
2019/08/22 DOTA
python复制文件的方法实例详解
2015/05/22 Python
python 构造三维全零数组的方法
2018/11/12 Python
Python高级特性 切片 迭代解析
2019/08/23 Python
python 爬虫 实现增量去重和定时爬取实例
2020/02/28 Python
windows支持哪个版本的python
2020/07/03 Python
基于python实现坦克大战游戏
2020/10/27 Python
HTML5 Canvas图像模糊完美解决办法
2018/02/06 HTML / CSS
canvas基础之图形验证码的示例
2018/01/02 HTML / CSS
HTML5 Video/Audio播放本地文件示例介绍
2013/11/18 HTML / CSS
HTML5 canvas实现移动端上传头像拖拽裁剪效果
2016/03/14 HTML / CSS
canvas画图被放大且模糊的解决方法
2020/08/11 HTML / CSS
创立科技Java面试题
2015/11/29 面试题
vue项目实现分页效果
2021/03/24 Vue.js
医学生求职自荐信
2013/10/25 职场文书
经管应届生求职信范文
2014/05/18 职场文书
行政部经理助理岗位职责
2014/06/15 职场文书
团员年度个人总结
2015/02/26 职场文书
学生检讨书范文
2019/06/24 职场文书
详解MySQL主从复制及读写分离
2021/05/07 MySQL