在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
第十一节--重载
Nov 16 PHP
PHP 显示客户端IP与服务器IP的代码
Oct 12 PHP
php循环检测目录是否存在并创建(循环创建目录)
Jan 06 PHP
让Json更懂中文(JSON_UNESCAPED_UNICODE)
Oct 27 PHP
php 多关键字 高亮显示实现代码
Apr 23 PHP
基于PHP静态类的原罪详解
May 06 PHP
编译php 5.2.14+fpm+memcached(具体操作详解)
Jun 18 PHP
解析PHP中的unset究竟会不会释放内存
Jul 18 PHP
Mac OS下配置PHP+MySql环境
Feb 25 PHP
php函数传值的引用传递注意事项分析
Jun 25 PHP
php判断文件上传图片格式的实例详解
Sep 30 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
MySQL授权问题总结
2007/05/06 PHP
[原创]PHP global全局变量经典应用与注意事项分析【附$GLOBALS用法对比】
2019/07/12 PHP
JS 动态获取节点代码innerHTML分析 [IE,FF]
2009/11/30 Javascript
jquery 操作DOM的基本用法分享
2012/04/05 Javascript
解析prototype,JQuery中跳出each循环的方法
2013/12/12 Javascript
jQuery插件分享之分页插件jqPagination
2014/06/06 Javascript
jquery序列化表单以及回调函数的使用示例
2014/07/02 Javascript
Egret引擎开发指南之创建项目
2014/09/03 Javascript
JavaScript判断textarea值是否为空并给出相应提示
2014/09/04 Javascript
Javascript数组操作函数总结
2015/02/05 Javascript
浅谈JavaScript数据类型及转换
2015/02/28 Javascript
js只执行1次的函数示例
2016/07/20 Javascript
webpack打包js文件及部署的实现方法
2017/12/18 Javascript
js实现黑白div块画空心的图形
2018/12/13 Javascript
es6 symbol的实现方法示例
2019/04/02 Javascript
js判断复选框是否选中的方法示例【基于jQuery】
2019/10/10 jQuery
linux 下以二进制的方式安装 nodejs
2020/02/12 NodeJs
微信小程序转化为uni-app项目的方法示例
2020/05/22 Javascript
jQuery实现鼠标滑动切换图片
2020/05/27 jQuery
Python使用MYSQLDB实现从数据库中导出XML文件的方法
2015/05/11 Python
python实现列表中由数值查到索引的方法
2018/06/27 Python
Django 限制用户访问频率的中间件的实现
2018/08/23 Python
Django Docker容器化部署之Django-Docker本地部署
2019/10/09 Python
CSS3模拟IOS滑动开关效果
2016/09/28 HTML / CSS
领先的钻石和订婚戒指零售商:Diamonds-USA
2016/12/11 全球购物
深圳-东方伟业笔试部分
2015/02/11 面试题
给导游的表扬信
2014/01/10 职场文书
国际贸易专业个人求职信格式
2014/02/02 职场文书
高三学生评语大全
2014/04/25 职场文书
效能风暴心得体会
2014/09/04 职场文书
幼儿学前班评语
2014/12/29 职场文书
工作表扬信范文
2015/01/17 职场文书
2015年班主任个人工作总结
2015/03/31 职场文书
微信小程序和php的登录实现
2021/04/01 PHP
基于python实现银行管理系统
2021/04/20 Python
Android Gradle 插件自定义Plugin实现注意事项
2022/06/16 Java/Android