Laravel 7 新功能 HTTP 客户端入门

Posted PHP开源Hub

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Laravel 7 新功能 HTTP 客户端入门相关的知识,希望对你有一定的参考价值。

Laravel 7 有一个新的 HTTP 客户端,它为流行的 Guzzle HTTP 客户端提供了最轻简的 API。如果你错过了新闻,让我们来回顾一些基础知识。你可以在 Laravel 7 HTTP 客户端文档 中找到所有需要知道的信息,但是让我们先粗略地看一下其中的一些特性。

Guzzle 是一个强大的 HTTP 客户端,但是当试图创建一个简单的 HTTP GET 或从 JSON API 获取数据时,80% 的用例看起来很复杂。

突出特点

浏览一下,这里是我最喜欢的 Laravel Http 客户端提供的功能:

  • 可链式请求设置

  • 易于访问 JSON 响应数据

  • 不用模板设置就能发起一个简单的请求

  • 重试失败的请求

  • 围绕身份验证头 (basic, digest, bearer) 的方便方法

  • 虚拟请求以及检查请求

对于更复杂的 HTTP 客户端工作,你可能得直接使用 Guzzle,但我怀疑 Laravel HTTP 拥有大多数项目所需的一切。

基本用法

使用 Laravel 的 HTTP 客户端,你可能会用到下面这些最基本的用法::

use Illuminate\Support\Facades\Http;

$response = Http::get('https://laravel.com');

// 获取响应体
$response->body();

$response = Http::get( 'https://api.github.com/users/paulredmond/gists' );

// 从 JSON 响应获取数组数据
$data = $response->json();

访问数据

有几种方法可以从 JSON 响应中访问数据: json() 和 ArrayAccess方法:

// 通过 `json()` 访问响应数据
$data = $response->json();
$data['username'];

// 通过 Response 对象访问数据
Http::get( 'https://api.github.com/users/paulredmond/gists' )['username'];

// 返回响应对象然后直接访问
$response = Http::get('...');
$response['username'];

错误处理

有一件事情可能会使 Guzzle 变得令人迷惑和复杂,那就是不断地在 try/catch 块中包装调用,或者在每个项目上创建一个小型的抽象来处理这个问题。

Laravel 捕获了400500响应,并提供了一些方法来确定在响应过程中是否发生了任何不好的事情:

$response = Http::get( 'https://api.github.com/users/paulredmond/gists' );

// 响应上的布尔值检验
$response->ok() : bool;
$response->clientError(): bool;
$response->successful() : bool;
$response->serverError() : bool;
$response->clientError() : bool;

超时

在阅读了 Laravel 处理客户端和服务器异常之后,我一开始并不清楚超时导致异常。默认的超时时间相当长; 但是,Laravel HTTP 允许你使用 timeout()方法来定义超时时间(以秒为单位) :

$response = Http::timeout(5)
->get( 'https://ffdsafdsafdsafas.com' );

// Illuminate\Http\Client\ConnectionException:
// cURL error 28: Connection timed out after 5005 milliseconds

了解更多

你可以从 Laravel 7 HTTP 客户端文档 了解到大部分你所需要了解的。我也建议你查看 Illuminate/Http 的类——它是一个相当简单、优雅的 API,使用起来很直观。


以上是关于Laravel 7 新功能 HTTP 客户端入门的主要内容,如果未能解决你的问题,请参考以下文章

使用 Laravel Lighthouse 在 Laravel 7 中出现 CORS 错误

Laravel 5 系列入门教程最适合中国人的 Laravel 教程

homestead的laravel项目错误:Use of undefined constant JSON_INVALID_UTF8_SUBSTITUTE - assumed ‘JSON_INVAL(代

2016 版 Laravel 系列入门教程

Nginx入门基础篇

[7] CMake总结 - 4 INSTALL