在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分页函数
Jul 08 PHP
PHP下几种删除目录的方法总结
Aug 19 PHP
用mysql内存表来代替php session的类
Feb 01 PHP
php中的观察者模式
Mar 24 PHP
php读取图片内容并输出到浏览器的实现代码
Aug 08 PHP
PHP面向对象程序设计之接口用法
Aug 20 PHP
PHP随机数 C扩展随机数
May 04 PHP
PHP通过加锁实现并发情况下抢码功能
Aug 10 PHP
PHP排序算法之堆排序(Heap Sort)实例详解
Apr 21 PHP
PHP实现打包zip并下载功能
Jun 12 PHP
PHP设计模式之模板方法模式实例浅析
Dec 20 PHP
记Laravel调用Gin接口调用formData上传文件的实现方法
Dec 12 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用户指南-cookies部分
2006/10/09 PHP
PHP UTF8中文字符截断函数代码
2012/09/11 PHP
PHP实现的猴王算法(猴子选大王)示例
2018/04/30 PHP
html读出文本文件内容
2007/01/22 Javascript
计算新浪Weibo消息长度(还可以输入119字)
2013/07/02 Javascript
创建你的第一个AngularJS应用的方法
2015/06/16 Javascript
Chrome浏览器的alert弹窗禁止再次弹出后恢复的方法
2016/12/30 Javascript
JS中Array数组学习总结
2017/01/18 Javascript
JavaScript字符集编码与解码详谈
2017/02/02 Javascript
JavaScript30 一个月纯 JS 挑战中文指南(英文全集)
2017/07/23 Javascript
使用Node.js搭建静态资源服务详细教程
2017/08/02 Javascript
深入浅析Node.js 事件循环、定时器和process.nextTick()
2018/10/22 Javascript
JS浅拷贝和深拷贝原理与实现方法分析
2019/02/28 Javascript
JS字符串补全方法padStart()和padEnd()
2020/05/27 Javascript
Pyhton中防止SQL注入的方法
2015/02/05 Python
在Python下进行UDP网络编程的教程
2015/04/29 Python
pandas对指定列进行填充的方法
2018/04/11 Python
Python实现按中文排序的方法示例
2018/04/25 Python
Django urls.py重构及参数传递详解
2019/07/23 Python
python用TensorFlow做图像识别的实现
2020/04/21 Python
PyCharm设置Ipython交互环境和宏快捷键进行数据分析图文详解
2020/04/23 Python
python 自定义异常和主动抛出异常(raise)的操作
2020/12/11 Python
基于HTML5 WebGL的3D机房的示例
2018/03/16 HTML / CSS
Sephora丝芙兰印尼官方网站:购买化妆品和护肤品
2018/07/02 全球购物
丝芙兰墨西哥官网:Sephora墨西哥
2020/05/30 全球购物
巴西购物网站:Onofre Agora
2020/06/08 全球购物
年度考核评语
2014/01/19 职场文书
幼儿园家长寄语
2014/04/02 职场文书
危爆物品安全大检查大整治工作方案
2014/05/03 职场文书
优秀少先队大队辅导员事迹材料
2014/05/04 职场文书
暑期社会实践证明书
2014/11/17 职场文书
销售员岗位职责
2015/02/10 职场文书
针对吵架老公保证书
2015/05/08 职场文书
Idea连接MySQL数据库出现中文乱码的问题
2021/04/14 MySQL
阿里云服务器搭建Php+Apache运行环境的详细过程
2021/05/15 PHP
如何创建一个创建MySQL数据库中的datetime类型
2022/03/21 MySQL