Guzzle Http 클라이언트를 모니터링하는 방법 – PHP 빠른 팁

王林
풀어 주다: 2024-08-17 06:39:08
원래의
481명이 탐색했습니다.

Guzzle은 HTTP 요청을 쉽게 보내고 웹 서비스 라이브러리를 생성할 수 있게 해주는 인기 있는 PHP HTTP 클라이언트입니다. 가장 널리 사용되는 PHP 프레임워크는 내부 Http 클라이언트 서비스를 제공하며 단순히 Guzzle Http 클라이언트를 사용자 정의하여 구현한 것입니다.

  • 라라벨 HTTP 클라이언트
  • 심포니 HTTP 클라이언트
  • Laminas(이전 Zend Framework) Http 클라이언트

Guzzle은 두 가지 주요 이유로 널리 사용됩니다.

1) 맞춤화 및 유연성

디자인 패턴 팬을 위해 Guzzle은 확장 기능을 제공합니다. 이는 핵심 구성 요소(Http 클라이언트, 요청, 응답, Milddeware 등)를 확장하여 Guzzle에 새로운 기능을 쉽게 구현할 수 있음을 의미합니다.

2) 미들웨어 지원

Guzzle 미들웨어 시스템을 사용하면 개발자는 요청이 전송되기 전에 요청과 처리되기 전에 응답과 상호작용할 수 있습니다. 로깅, 인증, 오류 처리 등의 고급 기능을 활성화할 수 있습니다.

Guzzle HTTP 클라이언트 소개

이 튜토리얼에서는 외부 서비스에 대해 애플리케이션에서 이루어진 모든 요청을 쉽게 모니터링할 수 있도록 사용자 정의 Guzzle Http 클라이언트를 생성하는 과정을 안내하겠습니다.

또한 이 구현을 IoC 컨테이너(또는 서비스 컨테이너)에 주입하여 애플리케이션 전체에서 이 구현을 사용할 수 있게 만드는 방법도 보여드리겠습니다.

기본 사항과 사용자 정의 옵션을 다루고 실제 코드 예제를 제공합니다.

거즐 설치

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 클라이언트 클래스를 확장하고 생성자를 사용자 정의하여 이 클라이언트의 모든 요청에 ​​사용자 정의 헤더를 추가합니다.

Guzzle HTTP 요청 모니터링

Guzzle은 Http 요청을 실행하는 바로가기 방법을 제공합니다.

$client->get('/endpoint');
$client->post('/endpoint');
$client->put('/endpoint');
로그인 후 복사

이러한 모든 방법은 내부의 일반 요청 방법을 사용합니다. 아래 스크린샷은 Guzzle 클라이언트 코드에서 가져온 것입니다:

How to monitor Guzzle Http Client – PHP Fast tips

요청 방법을 재정의하여 애플리케이션에서 외부 서비스에 대한 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 호출을 볼 수 있습니다.

How to monitor Guzzle Http Client – PHP Fast tips

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 클라이언트를 컨테이너에 바인딩

이 예에서는 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를 처음 사용하시나요? 무료로 애플리케이션을 모니터링하세요

Inspector는 소프트웨어 개발자를 위해 특별히 설계된 코드 실행 모니터링 도구입니다. 클라우드 인프라나 서버에 아무것도 설치할 필요가 없습니다. Composer 패키지만 설치하면 바로 사용할 수 있습니다.

다른 복잡한 올인원 플랫폼과 달리 Inspector는 매우 쉽고 PHP 친화적입니다. Laravel 또는 Symfony 패키지를 사용해 볼 수 있습니다.

효과적인 자동화, 심층적인 통찰력, 경고 및 알림을 메시징 환경으로 전달하는 기능을 찾고 있다면 Inspector를 무료로 사용해 보세요. 계정을 등록하세요.

또는 웹사이트에서 자세한 내용을 알아보세요: https://inspector.dev

How to monitor Guzzle Http Client – PHP Fast tips

위 내용은 Guzzle Http 클라이언트를 모니터링하는 방법 – PHP 빠른 팁의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:dev.to
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿
회사 소개 부인 성명 Sitemap
PHP 중국어 웹사이트:공공복지 온라인 PHP 교육,PHP 학습자의 빠른 성장을 도와주세요!