在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
如何限制访问者的ip(PHPBB的代码)
Oct 09 PHP
PHP curl 抓取AJAX异步内容示例
Sep 09 PHP
php使用cookie实现记住登录状态
Apr 27 PHP
深入理解PHP内核(一)
Nov 10 PHP
实例讲解如何在PHP的Yii框架中进行错误和异常处理
Mar 17 PHP
PHPExcel简单读取excel文件示例
May 26 PHP
Yii2.0使用阿里云OSS的SDK上传图片、下载、删除图片示例
Sep 20 PHP
php插入mysql数据返回id的方法
May 31 PHP
详解PHP多个进程配合redis的有序集合实现大文件去重
Mar 06 PHP
apache集成php7.3.5的详细步骤
Jun 20 PHP
PHP策略模式写法
Apr 01 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 利用socket发送HTTP请求(GET,POST)
2015/08/24 PHP
php提高网站效率的技巧
2015/09/29 PHP
[原创]php token使用与验证示例【测试可用】
2017/08/30 PHP
使用Git实现Laravel项目的自动化部署
2019/11/24 PHP
COM中获取JavaScript数组大小的代码
2009/11/22 Javascript
jQuery动态添加 input type=file的实现代码
2012/06/14 Javascript
javascript两种function的定义介绍及区别说明
2013/05/02 Javascript
一个仿糯米弹框效果demo
2014/07/22 Javascript
Node.js文件操作详解
2014/08/16 Javascript
13个PHP函数超实用
2015/10/21 Javascript
JavaScript Length 属性的总结
2015/11/02 Javascript
Node.js 条形码识别程序构建思路详解
2016/02/14 Javascript
JS实现汉字与Unicode码相互转换的方法详解
2017/04/28 Javascript
本地存储localStorage用法详解
2017/07/31 Javascript
详解vue移动端项目的适配(以mint-ui为例)
2018/08/17 Javascript
python在多玩图片上下载妹子图的实现代码
2013/08/13 Python
Python3简单实例计算同花的概率代码
2017/12/06 Python
Django Celery异步任务队列的实现
2019/07/24 Python
Java爬虫技术框架之Heritrix框架详解
2020/07/22 Python
html5 canvas 画图教程案例分析
2012/11/23 HTML / CSS
WWE美国职业摔角官方商店:WWE Shop
2018/11/15 全球购物
Carolina工作鞋官网:Carolina Footwear
2019/03/14 全球购物
畜牧兽医本科生个人的自我评价
2013/10/11 职场文书
历史系自荐信范文
2013/12/24 职场文书
美容师的职业规划书
2013/12/27 职场文书
大学毕业感言一句话
2014/02/06 职场文书
竞选学习委员演讲稿
2014/04/28 职场文书
群众路线个人对照检查材料
2014/09/23 职场文书
民政局个人整改措施
2014/09/24 职场文书
大学毕业生自我评价
2015/03/02 职场文书
政府会议通知范文
2015/04/15 职场文书
员工规章制度范本
2015/08/07 职场文书
MySQL 重命名表的操作方法及注意事项
2021/05/21 MySQL
简述Java中throw-throws异常抛出
2021/08/07 Java/Android
Java 在线考试云平台的实现
2021/11/23 Java/Android
Nebula Graph解决风控业务实践
2022/03/31 MySQL