在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在线生成二维码代码(google api)
Jun 03 PHP
php中session使用示例
Mar 29 PHP
php+ajax实时输入自动搜索匹配的方法
Dec 26 PHP
php将字符串随机分割成不同长度数组的方法
Jun 01 PHP
php显示时间常用方法小结
Jun 05 PHP
PHP foreach遍历多维数组实现方式
Nov 16 PHP
PHP编程计算文件或数组中单词出现频率的方法
May 22 PHP
php实现网页端验证码功能
Jul 11 PHP
laravel手动创建数组分页的实现代码
Jun 07 PHP
PHP+Redis开发的书签案例实战详解
Jul 09 PHP
laravel框架模型和数据库基础操作实例详解
Jan 25 PHP
php设计模式之备忘模式分析【星际争霸游戏案例】
Mar 24 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 调试环境(IIS+PHP+MYSQL)
2007/01/10 PHP
PHP5.3.1 不再支持ISAPI
2010/01/08 PHP
php获取远程图片体积大小的实例
2013/11/12 PHP
Yii框架防止sql注入,xss攻击与csrf攻击的方法
2016/10/18 PHP
PHP+Mysql+Ajax实现淘宝客服或阿里旺旺聊天功能(前台页面)
2017/06/16 PHP
php更新cookie内容的详细方法
2019/09/30 PHP
JavaScript中的方法调用详细介绍
2014/12/30 Javascript
Javascript中innerHTML用法实例分析
2015/01/12 Javascript
深入理解JavaScript系列(48):对象创建模式(下篇)
2015/03/04 Javascript
JavaScript数据类型判定的总结笔记
2015/07/31 Javascript
javascript禁止访客复制网页内容的实现代码
2015/08/05 Javascript
JavaScript常用数组算法小结
2016/02/13 Javascript
jquery对dom节点的操作【推荐】
2016/04/15 Javascript
javacript获取当前屏幕大小
2016/06/04 Javascript
微信小程序 时间格式化(util.formatTime(new Date))详解
2016/11/16 Javascript
Angular的MVC和作用域
2016/12/26 Javascript
jQuery获取所有父级元素及同级元素及子元素的方法(推荐)
2018/01/21 jQuery
vue权限问题的完美解决方案
2019/05/08 Javascript
vue任意关系组件通信与跨组件监听状态vue-communication
2020/10/18 Javascript
[01:01:52]DOTA2-DPC中国联赛正赛 iG vs LBZS BO3 第一场 3月4日
2021/03/11 DOTA
Windows和Linux下使用Python访问SqlServer的方法介绍
2015/03/10 Python
python学习数据结构实例代码
2015/05/11 Python
自动化Nginx服务器的反向代理的配置方法
2015/06/28 Python
python中异常捕获方法详解
2017/03/03 Python
python PyAutoGUI 模拟鼠标键盘操作和截屏功能
2019/08/04 Python
解决TensorFlow模型恢复报错的问题
2020/02/06 Python
python 在sql语句中使用%s,%d,%f说明
2020/06/06 Python
HTML5打开本地app应用的方法
2016/03/31 HTML / CSS
双立人美国官方商店:ZWILLING集团餐具和炊具
2020/05/07 全球购物
优秀民警事迹材料
2014/01/29 职场文书
2014年自愿离婚协议书范本
2014/09/25 职场文书
党员“一帮一”活动总结
2015/05/07 职场文书
2015年客房服务员工作总结
2015/05/15 职场文书
2019最新公司租房合同(例文)
2019/07/18 职场文书
你知道Java Spring的两种事务吗
2022/03/16 Java/Android
Mybatis-plus配置分页插件返回统一结果集
2022/06/21 Java/Android