나무모에 미러 (일반/밝은 화면)
최근 수정 시각 : 2026-01-16 17:35:05

Guzzle

[include(틀:소프트웨어 정보
, 이름 = Guzzle
, 장르 = 라이브러리, HTTP 클라이언트
, 개발 = Michael Dowling
, 발표 = 2011년
, 최신 버전 = 7.x
, 언어 = PHP
, 라이선스 = MIT 라이선스
, 사이트 = 공식 문서
)]

1. 개요2. 특징3. Laravel과의 관계4. 예제 코드
4.1. 기본 요청 (GET)4.2. 비동기 요청 (Async)

1. 개요

GuzzlePHP를 위한 강력한 HTTP 클라이언트 라이브러리이다.

PHP에서 외부 API와 통신하기 위해 사용되던 기존의 `cURL` 함수들은 옵션 설정이 복잡하고 코드가 지저분해지기 쉬웠다. Guzzle은 이를 객체 지향적인 인터페이스로 추상화하여, 개발자가 매우 직관적이고 간결하게 HTTP 요청(GET, POST 등)을 보낼 수 있게 해준다.

현재 PHP 생태계에서 사실상의 표준(De facto Standard) HTTP 클라이언트로 자리 잡았으며, Composer 패키지 다운로드 순위에서 항상 최상위권을 유지하고 있다.

2. 특징

3. Laravel과의 관계

Laravel 프레임워크에 내장된 `Http` 파사드(Facade)나 HTTP 클라이언트 기능은 내부적으로 Guzzle을 래핑(Wrapping)하여 구현된 것이다. 따라서 라라벨 개발자들은 알게 모르게 이미 Guzzle을 사용하고 있는 셈이다.

4. 예제 코드

4.1. 기본 요청 (GET)

#!syntax php
use GuzzleHttp\Client;

$client = new Client();
$response = $client->request('GET', 'https://api.github.com/repos/guzzle/guzzle');

echo $response->getStatusCode(); // 200
echo $response->getHeaderLine('content-type'); // 'application/json; charset=utf8'
echo $response->getBody(); // '{"id": 1420053, "name": "guzzle", ...}'

4.2. 비동기 요청 (Async)

#!syntax php
$promise = $client->requestAsync('GET', 'http://httpbin.org/get');

$promise->then(
    function ($response) {
        echo 'Got a response! ' . $response->getStatusCode();
    },
    function ($exception) {
        echo 'The request failed... ' . $exception->getMessage();
    }
);

$promise->wait();