분류 php

PHP REST Client - Guzzle

컨텐츠 정보

  • 조회 319 (작성일 )

본문

Guzzle은 HTTP 요청을 쉽게 보내고 웹 서비스와 쉽게 통합 할 수 있는 PHP HTTP 클라이언트입니다.

  • 쿼리 문자열 작성, POST 요청, 대용량 업로드 스트리밍, 대용량 다운로드 스트리밍, HTTP 쿠키 사용, JSON 데이터 업로드 등을 위한 간단한 인터페이스 ...
  • 동일한 인터페이스를 사용하여 동기 및 비동기 요청을 모두 보낼 수 있습니다.
  • 요청, 응답 및 스트림에 PSR-7 인터페이스를 사용합니다. 이를 통해 Guzzle과 함께 다른 PSR-7 호환 라이브러리를 활용할 수 있습니다.
  • 기본 HTTP 전송을 추상화하여 환경을 작성하고 불가지론적인 코드를 전송할 수 있습니다. 즉, cURL, PHP 스트림, 소켓 또는 비 차단 이벤트 루프에 대한 엄격한 종속성이 없습니다.
  • 미들웨어 시스템을 사용하면 클라이언트 동작을 보강하고 구성 할 수 있습니다.
$client = new GuzzleHttp\Client();
$res = $client->request('GET', 'https://api.github.com/user', [
    'auth' => ['user', 'pass']
]);
echo $res->getStatusCode();
// "200"
echo $res->getHeader('content-type')[0];
// 'application/json; charset=utf8'
echo $res->getBody();
// {"type":"User"...'

// Send an asynchronous request.
$request = new \GuzzleHttp\Psr7\Request('GET', 'http://httpbin.org');
$promise = $client->sendAsync($request)->then(function ($response) {
    echo 'I completed! ' . $response->getBody();
});
$promise->wait();

요구 사항 

  • PHP 7.2.5
  • PHP 스트림 핸들러를 사용하려면 시스템의 php.ini에서 allow_url_fopen을 활성화해야 합니다.
  • cURL 핸들러를 사용하려면 OpenSSL 및 zlib로 컴파일 된 최신 버전의 cURL> = 7.19.4가 있어야 합니다.

노트

Guzzle은 더 이상 HTTP 요청을 보내기 위해 cURL이 필요하지 않습니다. Guzzle은 cURL이 설치되지 않은 경우 PHP 스트림 래퍼를 사용하여 HTTP 요청을 보냅니다. 또는 요청을 보내는 데 사용되는 자체 HTTP 처리기를 제공 할 수 있습니다. 동시 요청을 보내기 위해서는 cURL이 여전히 필요합니다.


설치 


Guzzle을 설치하는 권장 방법은 Composer를 사용하는 것입니다. Composer는 프로젝트에 필요한 종속성을 선언하고 프로젝트에 설치할 수 있는 PHP 용 종속성 관리 도구입니다.


# Install Composer
curl -sS https://getcomposer.org/installer | php

Composer를 사용하여 Guzzle을 종속성으로 추가 할 수 있습니다.

composer require guzzlehttp/guzzle:^7.0

또는 프로젝트의 기존 composer.json 파일에서 Guzzle을 종속성으로 지정할 수 있습니다.


 {
   "require": {
      "guzzlehttp/guzzle": "^7.0"
   }
}

설치 후 Composer의 자동 로더가 필요합니다.

require 'vendor/autoload.php';

getcomposer.org에서 Composer 설치, 자동 로딩 구성 및 종속성 정의를 위한 기타 모범 사례에 대해 자세히 알아볼 수 있습니다.


Bleeding edge 


개발 중에 Guzzle의 버전 요구 사항을 ^7.0@dev로 설정하여 마스터 브랜치의 최신 변경 사항을 따라갈 수 있습니다.


{
   "require": {
      "guzzlehttp/guzzle": "^7.0@dev"
   }
}

https://docs.guzzlephp.org/en/latest/