Guzzle 是一款受歡迎的 PHP HTTP 用戶端,可以輕鬆發送 HTTP 請求和建立 Web 服務庫。最受歡迎的 PHP 框架提供了內部 Http Client 服務,它們只是 Guzzle Http Client 的客製化實作:
- Laravel Http 客戶端
- Symfony Http 客戶端
- Laminas(以前的 Zend Framework)Http 客戶端
Guzzle 被廣泛使用有兩個主要原因:
1) 客製化和靈活性
對於設計模式的愛好者來說,Guzzle 是開放的擴充。意味著您可以透過擴展其核心元件(Http Client、Request、Response、Milddeware 等)輕鬆地在 Guzzle 中實現新功能。
2)對中介軟體的支持
Guzzle 中間件系統允許開發人員在發送請求之前與請求進行交互,並在處理回應之前與回應進行交互。它可以啟用日誌記錄、身份驗證和錯誤處理等高級功能。
Guzzle HTTP 用戶端簡介
在本教程中,我將引導您完成建立自訂 Guzzle Http 用戶端的過程,以便輕鬆監控應用程式針對外部服務發出的每個請求。
我還將向您展示如何將此實作注入到 IoC 容器(或服務容器)中,以使此實作在您的整個應用程式中可用。
我們將介紹基礎知識、自訂選項,並提供真實的程式碼範例。
安裝Guzzle
確保您已安裝 Guzzle。如果沒有,請使用 Composer 安裝:
composer require guzzlehttp/guzzle
基本客製化
讓我們先建立一個基本的自訂 Guzzle Http 客戶端:
namespace App\Extensions\Guzzle; use GuzzleHttp\Client; class CustomGuzzleClient extends Client { public function __construct(array $config = []) { $config['headers']['Custom-Header'] = 'Custom-Value'; parent::__construct($config); } }
在此範例中,我們擴展了 Guzzle Http Client 類別並自訂建構函數,以向該客戶端發出的所有請求新增自訂標頭。
監控 Guzzle Http 請求
Guzzle 提供了執行 Http 請求的快速方法:
$client->get('/endpoint'); $client->post('/endpoint'); $client->put('/endpoint');
所有這些方法都使用內部的通用請求方法。下面的截圖取自 Guzzle 客戶端程式碼:
您可以重寫請求方法來自訂應用程式對外部服務進行的 HTTP 呼叫的管理。
namespace App\Extensions\Guzzle; use GuzzleHttp\Client; use GuzzleHttp\Exception\RequestException; class CustomGuzzleClient extends Client { public function request($method, $uri, array $options = []) { return inspector()->addSegment(function () use ($method, $uri, $options) { return parent::request($method, $uri, $options); }, "http", "{$method} {$uri}"); } }
在此範例中,我只是在每個請求的事務時間軸中新增一個項目。現在您可以在監控視圖中看到 Guzzle 進行的 API 呼叫:
如果您是 Inspector 新手,您可以按照本教學了解如何入門:
https://inspector.dev/laravel-real-time-performance-monitoring-using-inspector-part-1/
您也可以在回呼中註入 Segment 參數來與項目互動或添加更多資訊:
namespace App\Extensions\Guzzle; use GuzzleHttp\Client; use GuzzleHttp\Exception\RequestException; use Inspector\Models\Segment; class CustomGuzzleClient extends Client { public function request($method, $uri, array $options = []) { return inspector()->addSegment(function (Segment $segment) use ($method, $uri, $options) { $response = parent::request($method, $uri, $options); $segment->label = "{$response->getStatusCode()} {$method} {$uri}"; return $response; }, "http"); } }
使用自訂 Http 客戶端
現在,您可以在應用程式中使用自訂客戶端。由於該擴充功能不會對標準 Guzzle Http 用戶端的行為進行任何更改,因此您可以建立自訂類別的實例並照常使用它:
// Create an instance of the custom client $client = new CustomGuzzleClient(['base_uri' => 'https://api.example.com']); // Make an API request. It will be automatically monitored by Inspector. $response = $client->get('/endpoint');
將 Guzzle Http Client 綁定到容器中
在這個範例中我將使用 Laravel,但基本概念與本文開頭提到的最受歡迎的 PHP 框架相同。它們都與服務容器一起使用。
我們為 Guzzle Http Client 類別建立一個綁定到容器中的單例。因此,每個請求此類的服務都會收到一個支援即時監控的自訂客戶端實例。
use GuzzleHttp\Client; use App\Extensions\Guzzle\CustomGuzzleClient; use Illuminate\Contracts\Foundation\Application; $this->app->singleton(Client::class, function (Application $app) { return new CustomGuzzleClient(); });
現在您可以嘗試在 Artisan Command 中註入 Guzzle Http Client 類別並執行 Http 呼叫以進行測試:
namespace App\Console\Commands; use Illuminate\Console\Command; use GuzzleHttp\Client; class TryCommand extends Command { /** * The name and signature of the console command. * * @var string */ protected $signature = 'try'; /** * The console command description. * * @var string */ protected $description = 'Test Guzzle Http Client monitoring.'; /** * Inject the Guzzle Http Client class into the constructor. * The CustomGuzzleClient will be the concrete class. */ public function __construct(protected Client $client) { parent::__construct(); } /** * Handle the command execution. */ public function handle() { $this->line($this->description); $this->line("Concrete class: ".get_class($this->client)); $this->client->get('https://google.com'); return Command::SUCCESS; } }
執行指令來驗證 Http 呼叫是否在交易時間軸中可見:
php artisan try
督察新人?免費監控您的應用程式
Inspector是一款專為軟體開發人員設計的程式碼執行監控工具。您無需在雲端基礎架構或伺服器中安裝任何內容,只需安裝 Composer 套件即可開始使用。
與其他複雜的一體化平台不同,Inspector 非常簡單,並且對 PHP 友善。您可以嘗試我們的 Laravel 或 Symfony 套件。
如果您正在尋找有效的自動化、深入的見解以及將警報和通知轉發到訊息傳遞環境的能力,請免費嘗試 Inspector。註冊您的帳戶。
或在網站上了解更多:https://inspector.dev
以上是如何監控 Guzzle Http 用戶端 – PHP 快速提示的詳細內容。更多資訊請關注PHP中文網其他相關文章!

長URL(通常用關鍵字和跟踪參數都混亂)可以阻止訪問者。 URL縮短腳本提供了解決方案,創建了簡潔的鏈接,非常適合社交媒體和其他平台。 這些腳本對於單個網站很有價值

Laravel使用其直觀的閃存方法簡化了處理臨時會話數據。這非常適合在您的應用程序中顯示簡短的消息,警報或通知。 默認情況下,數據僅針對後續請求: $請求 -

這是有關用Laravel後端構建React應用程序的系列的第二個也是最後一部分。在該系列的第一部分中,我們使用Laravel為基本的產品上市應用程序創建了一個RESTFUL API。在本教程中,我們將成為開發人員

Laravel 提供简洁的 HTTP 响应模拟语法,简化了 HTTP 交互测试。这种方法显著减少了代码冗余,同时使您的测试模拟更直观。 基本实现提供了多种响应类型快捷方式: use Illuminate\Support\Facades\Http; Http::fake([ 'google.com' => 'Hello World', 'github.com' => ['foo' => 'bar'], 'forge.laravel.com' =>

PHP客戶端URL(curl)擴展是開發人員的強大工具,可以與遠程服務器和REST API無縫交互。通過利用Libcurl(備受尊敬的多協議文件傳輸庫),PHP curl促進了有效的執行

您是否想為客戶最緊迫的問題提供實時的即時解決方案? 實時聊天使您可以與客戶進行實時對話,並立即解決他們的問題。它允許您為您的自定義提供更快的服務

2025年的PHP景觀調查調查了當前的PHP發展趨勢。 它探討了框架用法,部署方法和挑戰,旨在為開發人員和企業提供見解。 該調查預計現代PHP Versio的增長

在本文中,我們將在Laravel Web框架中探索通知系統。 Laravel中的通知系統使您可以通過不同渠道向用戶發送通知。今天,我們將討論您如何發送通知OV


熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

PhpStorm Mac 版本
最新(2018.2.1 )專業的PHP整合開發工具

Safe Exam Browser
Safe Exam Browser是一個安全的瀏覽器環境,安全地進行線上考試。該軟體將任何電腦變成一個安全的工作站。它控制對任何實用工具的訪問,並防止學生使用未經授權的資源。

SublimeText3 英文版
推薦:為Win版本,支援程式碼提示!

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)