在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服务器实现多session并发运行
Oct 09 PHP
PHP中单引号与双引号的区别分析
Aug 19 PHP
PHP冒泡算法详解(递归实现)
Nov 10 PHP
php实现递归与无限分类的方法
Feb 16 PHP
ThinkPHP表单数据智能写入create方法实例分析
Sep 27 PHP
在WordPress中使用wp-cron插件来设置定时任务
Dec 10 PHP
yii分页组件用法实例分析
Dec 28 PHP
微信公众号判断用户是否已关注php代码解析
Jun 24 PHP
功能强大的php文件上传类
Aug 29 PHP
PHP实现一个简单url路由功能实例
Nov 05 PHP
php类自动装载、链式操作、魔术方法实现代码
Jul 23 PHP
laravel入门知识点整理
Sep 15 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 Undefined index报错的修复方法
2011/07/17 PHP
php中计算程序运行时间的类代码
2012/11/03 PHP
探讨PHP中this,self,parent的区别详解
2013/06/08 PHP
Laravel 中使用 Vue.js 实现基于 Ajax 的表单提交错误验证操作
2017/06/30 PHP
PHP SESSION机制的理解与实例
2019/03/22 PHP
动态为事件添加js代码示例
2009/02/15 Javascript
关于hashchangebroker和statehashable的补充文档
2011/08/08 Javascript
jquery如何判断某元素是否具备指定的样式
2013/11/05 Javascript
javascript简单实现图片预加载
2014/12/03 Javascript
js实现非常简单的焦点图切换特效实例
2015/05/07 Javascript
jQuery实现手机版页面翻页效果的简单实例
2016/10/05 Javascript
Angular下H5上传图片的方法(可多张上传)
2017/01/09 Javascript
详解基于webpack和vue.js搭建开发环境
2017/04/05 Javascript
webpack配置sass模块的加载的方法
2017/07/30 Javascript
微信小程序实现树莓派(raspberry pi)小车控制
2020/02/12 Javascript
vue-router之解决addRoutes使用遇到的坑
2020/07/19 Javascript
浅谈vue中使用编辑器vue-quill-editor踩过的坑
2020/08/03 Javascript
[02:09:59]火猫TV国士无双dota2 6.82版本详解(下)
2014/09/29 DOTA
[01:09]DOTA2次级职业联赛 - ishow.HMM战队宣传片
2014/12/01 DOTA
python实现socket端口重定向示例
2014/02/10 Python
33个Python爬虫项目实战(推荐)
2019/07/08 Python
Python实现二叉树的最小深度的两种方法
2019/09/30 Python
Python+Django+MySQL实现基于Web版的增删改查的示例代码
2020/05/13 Python
德购商城:德国进口直邮商城
2017/06/13 全球购物
数据库测试通常都包括哪些方面
2015/11/30 面试题
财务会计专业应届毕业生求职信
2013/10/18 职场文书
食品营养与检测应届生求职信
2013/11/08 职场文书
数学系毕业生的自我评价
2014/01/10 职场文书
致标枪运动员广播稿
2014/02/06 职场文书
学生个人自我鉴定
2014/03/26 职场文书
超市仓管员岗位职责范本
2014/09/18 职场文书
2014光棍节单身联谊活动策划书
2014/10/10 职场文书
会计求职简历自我评价
2015/03/10 职场文书
开学第一周总结
2015/07/16 职场文书
拔河比赛队名及霸气口号
2015/12/24 职场文书
使用springMVC所需要的pom配置
2021/09/15 Java/Android