在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可能遇到的问题“无法载入mysql扩展” 的解决方法
Apr 16 PHP
PHP编程中字符串处理的5个技巧小结
Nov 13 PHP
for循环连续求和、九九乘法表代码
Feb 20 PHP
PHP无法访问远程mysql的问题分析及解决
May 16 PHP
解析mysql 表中的碎片产生原因以及清理
Jun 22 PHP
php中使用url传递数组的方法
Feb 11 PHP
php使用substr()和strpos()联合查找字符串中某一特定字符的方法
May 12 PHP
老生常谈PHP位运算的用途
Mar 12 PHP
PHP二维关联数组的遍历方式(实例讲解)
Oct 18 PHP
PHP结合Vue实现滚动底部加载效果
Dec 17 PHP
JS(jQuery)实现聊天接收到消息语言自动提醒功能详解【提示“您有新的消息请注意查收”】
Apr 16 PHP
Laravel 连接(Join)示例
Oct 16 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+mysql 采用ajax技术的 省 市 地 3级联动无刷新菜单 源码
2006/12/16 PHP
一步一步学习PHP(3) php 函数
2010/02/15 PHP
PHP中mb_convert_encoding与iconv函数的深入解析
2013/06/21 PHP
php分页函数示例代码分享
2014/02/24 PHP
PHP之uniqid()函数用法
2014/11/03 PHP
php读取der格式证书乱码解决方法
2015/06/22 PHP
php异常处理方法实例汇总
2015/06/24 PHP
PHP+Mysql+jQuery文件下载次数统计实例讲解
2015/10/10 PHP
php mysql_real_escape_string addslashes及mysql绑定参数防SQL注入攻击
2016/12/23 PHP
jQuery第三课 修改元素属性及内容的代码
2010/03/14 Javascript
JavaScript中获取元素索引的函数
2010/09/10 Javascript
如何将JS的变量值传递给ASP变量
2012/12/10 Javascript
JavaScript实现仿网易通行证表单验证
2015/05/25 Javascript
jQuery实现在最后一个元素之前插入新元素的方法
2015/07/18 Javascript
无需 Flash 使用 jQuery 复制文字到剪贴板
2016/04/26 Javascript
mvvm双向绑定机制的原理和实现代码(推荐)
2016/06/07 Javascript
input 禁止输入特殊字符的四种实现方式
2016/08/24 Javascript
如何处理JSON中的特殊字符
2016/11/30 Javascript
jQuery zTree树插件动态加载实例代码
2017/05/11 jQuery
vue项目上传Github预览的实现示例
2018/11/06 Javascript
Vue中使用create-keyframe-animation与动画钩子完成复杂动画
2019/04/09 Javascript
vue.js多页面开发环境搭建过程
2019/04/24 Javascript
vue.js+ElementUI实现进度条提示密码强度效果
2020/01/18 Javascript
[02:43]DOTA2英雄基础教程 圣堂刺客
2013/12/09 DOTA
Django model序列化为json的方法示例
2018/10/16 Python
Python 中list ,set,dict的大规模查找效率对比详解
2019/10/11 Python
python配置文件写入过程详解
2019/10/19 Python
python jenkins 打包构建代码的示例代码
2019/11/29 Python
分布式全文检索引擎ElasticSearch原理及使用实例
2020/11/14 Python
牧马人澳大利亚官网:Wrangler澳大利亚
2019/10/08 全球购物
总经理岗位职责
2013/11/09 职场文书
创建青年文明号材料
2014/05/09 职场文书
党的群众路线查摆剖析材料
2014/10/10 职场文书
2014年学校体育工作总结
2014/12/08 职场文书
2015年世界无车日活动总结
2015/03/23 职场文书
电话营销开场白
2015/05/29 职场文书