1.安装

composer requrie guzzlehttp/guzzle

2.封装

<?phpnamespace App\Services;use GuzzleHttp\Client;
use GuzzleHttp\Exception\ClientException;class Guzzle
{/*** GET请求* @param $url* @param array $options* @return mixed|void*/public static function get($url, $options = []){return self::sendRequest($url, 'GET', $options);}/** POST请求* @param $url* @param array $options* @return mixed|void*/public static function post($url, $options = [], $is_json = 1){if ($options['query']) {if ($is_json) {$options['json'] = $options['query'];} else{$options['form_params'] = $options['query'];}unset($options['query']);}return self::sendRequest($url, 'POST', $options);}/*** PUT请求* @param $url* @param array $options* @return mixed|void*/public static function put($url, $options = []){return self::sendRequest($url, 'PUT', $options);}/*** Delete请求* @param $url* @param array $options* @return mixed*/public static function delete($url, $options = []){return self::delete($url, $options);}public static function getOptions($params){$baseOptions = ['connect_timeout' => 10,'timeout' => 10,'verify' => false,'debug' => false,];$options = array_merge($baseOptions, $params);return $options;}/*** 发起HTTP请求* @param $url* @param string $method* @param array $options* @return mixed|void* @throws \GuzzleHttp\Exception\GuzzleException*/public static function sendRequest($url, string $method, array $options = []){$options = self::getOptions($options);$client = new Client();try {$request = $client->request($method, $url, $options);$body = $request->getBody();$contents = $body->getContents();$response = json_decode($contents, true);return $response;} catch (ClientException $e) {// write log$response = ['code'=>$e->getCode(),'message'=> $e->getMessage(),];echo json_encode($response);exit;}}
}

3.路由

Route::post('send', 'TestController@send');

4.测试

<?phpnamespace App\Http\Controllers;use App\Services\Guzzle;class TestController extends Controller
{public function send(){$baseUrl = 'https://movie.querydata.org';$apiName = '/api/generateimage';$url = $baseUrl.$apiName;$options = ['query' => ['id' => '33410979','lang' => 'Cn']];$result = Guzzle::get($url, $options);dd($result);}
}

返回结果

array:2 ["success" => 1"image" => "https://image.querydata.org/movie/poster/1630459073613-611f2aa2fda7bd337df36d9a.png"
]

Laravel Guzzle封装相关推荐

  1. laravel guzzle 使用

    安装: composer.json 添加 "guzzlehttp/guzzle": "~6.0", 然后执行: composer update guzzleht ...

  2. Laravel 联合查询 count计数去重

    业务需要做一个待办事件功能,其中主办人是单个,协作人是多个: 然后做了两个表,附表用来存协作人,与主表之间是一对多的关系, 列表显示需要全部数据采用了左连接查询.Left Join 求两个表的交集外加 ...

  3. Laravel 精选资源大全

    必备品 文档:Documentation API:API Reference 视频:Laracasts 新闻:Laravel News 中文文档 Laravel学院– Laravel 5.1 中文文档 ...

  4. Laravel 实现创建订单30分钟未支付自动关闭的功能

    文章目录 前情提要 什么是延迟分发 如何实现延迟分发 实现步骤(真实代码) 确保安装 redis 并且项目正常可用 将 .env 中队列配置项指定为 redis 在项目 app 目录下创建 Jobs ...

  5. php - Api 接口写法规范和要求

    前言 说明 apidoc是一个API文档生成工具, apidoc可以根据代码注释生成web api文档, apidoc从注释生成静态html网页文档,不仅支持项目版本号,还支持api版本号 安装 A) ...

  6. 如何正确使用qrcode生成二维码

    一.前言 关于使用qrcode,如果是基于laravel框架的话,可以考虑使用simple Qrcode,这是针对于laravel框架封装的一个qrcode的版本,使用起来更加简便快捷,功能也相对于比 ...

  7. PHP Monolog 日志的使用

    前言 Monolog是php下比较全又容易扩展的记录日志类库.目前有包括Symfony .Laravel. CakePHP等诸多知名php框架都内置了Monolog.Monolog可以把你的日志发送到 ...

  8. 记一次PHP并发性能调优实战 -- 性能提升104%

    作者: 万千钧(祝星) 适合阅读人群 文中的调优思路无论是php, java, 还是其他任何语言都是用. 如果你有php使用经验, 那肯定就更好了 业务背景 框架及相应环境 laravel5.7, m ...

  9. php laravel 返回统一格式,封装的统一的Laravel响应类,返回数据类

    封装的统一的Laravel返回数据类namespace App\Library; class Response { const OK = 0; const BAD_REQUEST = 1000; co ...

  10. php json 封装,laravel json返回封装

    laravel json返回值封装 laravel 返回的json封装 以便维护: 一般返回:return response()->json(['status' => 'success', ...

最新文章

  1. Oracle 启动,建表
  2. 如何高效的阅读Hadoop源代码?Hadoop的源代码写的怎么样?
  3. CSS 实例之翻转图片
  4. python将学号与成绩匹配_用Python运维网络(1):基础知识
  5. C语言变量unsafe,Java中Unsafe使用详解
  6. Effective C++ 读书笔记之Part4.Design and Declarations
  7. tomcat中 JVM 内存溢出及合理配置
  8. Android 高德地图No implementation found for long com.autonavi.amap.mapcore.MapCore
  9. android+字体稍微加粗,的Android设置的Roboto字体,加粗,斜体,普通,...(有点像自定义字体家族)...
  10. QIIME 2教程. 22命令行界面q2cli(2021.2)
  11. html通过拼音首字母定位,javascript实现通过拼音首字母快速选择下拉列表
  12. 作业车间调度算法及其应用(一)
  13. 主机无法复制文件到ubuntu虚拟机的解决方法
  14. linux b类地址设24位掩码,LINUX中的网络配置
  15. linux 文本字符串过滤,Linux文本过滤与处理命令
  16. verilog从txt中读取_verilog语言中的文件读写
  17. 平安保险公司软件测试机试题
  18. Mysql数据库基本知识一(表的操作在二中)
  19. python编写仪表盘4
  20. Simulink —— 三相交流控制系统中的坐标变换

热门文章

  1. Serval的试卷答案(线段树)
  2. form-group 两种常用使用
  3. 青岛大学计算机科学学院,青岛大学信息工程学院
  4. 京东后台模板导入SKU报格式错误
  5. Consistent hashing kills tencent2012笔试题附加题
  6. 高德地图看各省分界线_高德地图API生成地图(含有各个省份边界线)
  7. 谷哥学术2022年2月资源分享下载列表 15/20
  8. pvt检查是什么意思_专业术语EVT、DVT、PVT、MP是什么意思?
  9. tableau数据汇总/明细/分-总的行列展示— Lee桑的学习笔记
  10. Warning: To load an ES module, set “type“: “module“ in the package.json or use the .mjs extension.