GithubHelp home page GithubHelp logo

burkeen / guzzle Goto Github PK

View Code? Open in Web Editor NEW

This project forked from guzzle/guzzle

0.0 2.0 0.0 6.75 MB

Guzzle is a PHP HTTP client and framework for building RESTful web service clients

Home Page: http://guzzlephp.org/

License: MIT License

guzzle's Introduction

Guzzle, PHP HTTP client and webservice framework

Latest Stable Version Composer Downloads Build Status

Guzzle is a PHP HTTP client and framework for building RESTful web service clients.

  • Extremely powerful API provides all the power of cURL with a simple interface.
  • Truly take advantage of HTTP/1.1 with persistent connections, connection pooling, and parallel requests.
  • Service description DSL allows you build awesome web service clients faster.
  • Symfony2 event-based plugin system allows you to completely modify the behavior of a request.

Get answers with: Documentation, Forums, IRC (#guzzlephp @ irc.freenode.net)

// Really simple using a static facade
Guzzle\Http\StaticClient::mount();
$response = Guzzle::get('http://guzzlephp.org');

// More control using a client class
$client = new \Guzzle\Http\Client('http://guzzlephp.org');
$request = $client->get('/');
$response = $request->send();

Installing via Composer

The recommended way to install Guzzle is through Composer.

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

# Add Guzzle as a dependency
php composer.phar require guzzle/guzzle:~3.7

After installing, you need to require Composer's autoloader:

require 'vendor/autoload.php';

Installing via phar

Download the phar and include it in your project (minimal phar)

Features

  • Supports GET, HEAD, POST, DELETE, PUT, PATCH, OPTIONS, and any other custom HTTP method
  • Allows full access to request and response headers
  • Persistent connections are implicitly managed by Guzzle, resulting in huge performance benefits
  • Send requests in parallel
  • Cookie sessions can be maintained between requests using the CookiePlugin
  • Allows custom entity bodies, including sending data from a PHP stream and downloading data to a PHP stream
  • Responses can be cached and served from cache using the caching forward proxy plugin
  • Failed requests can be retried using truncated exponential backoff with custom retry policies
  • Entity bodies can be validated automatically using Content-MD5 headers and the MD5 hash validator plugin
  • All data sent over the wire can be logged using the LogPlugin
  • Subject/Observer signal slot system for unobtrusively modifying request behavior
  • Supports all of the features of libcurl including authentication, compression, redirects, SSL, proxies, etc
  • Web service client framework for building future-proof interfaces to web services
  • Includes a service description DSL for quickly building webservice clients
  • Full support for URI templates
  • Advanced batching functionality to efficiently send requests or commands in parallel with customizable batch sizes and transfer strategies

HTTP basics

<?php

use Guzzle\Http\Client;

$client = new Client('http://www.example.com/api/v1/key/{key}', [
    'key' => '***'
]);

// Issue a path using a relative URL to the client's base URL
// Sends to http://www.example.com/api/v1/key/***/users
$request = $client->get('users');
$response = $request->send();

// Relative URL that overwrites the path of the base URL
$request = $client->get('/test/123.php?a=b');

// Issue a head request on the base URL
$response = $client->head()->send();
// Delete user 123
$response = $client->delete('users/123')->send();

// Send a PUT request with custom headers
$response = $client->put('upload/text', [
    'X-Header' => 'My Header'
], 'body of the request')->send();

// Send a PUT request using the contents of a PHP stream as the body
// Send using an absolute URL (overrides the base URL)
$response = $client->put('http://www.example.com/upload', [
    'X-Header' => 'My Header'
], fopen('http://www.test.com/', 'r'));

// Create a POST request with a file upload (notice the @ symbol):
$request = $client->post('http://localhost:8983/solr/update', null, [
    'custom_field' => 'my value',
    'file' => '@/path/to/documents.xml'
]);

// Create a POST request and add the POST files manually
$request = $client->post('http://localhost:8983/solr/update')
    ->addPostFiles(['file' => '/path/to/documents.xml']);

// Responses are objects
echo $response->getStatusCode() . ' ' . $response->getReasonPhrase() . "\n";

// Requests and responses can be cast to a string to show the raw HTTP message
echo $request . "\n\n" . $response;

// Create a request based on an HTTP message
$request = RequestFactory::fromMessage(
    "PUT / HTTP/1.1\r\n" .
    "Host: test.com:8081\r\n" .
    "Content-Type: text/plain" .
    "Transfer-Encoding: chunked\r\n" .
    "\r\n" .
    "this is the body"
);

Using the static client facade

You can use Guzzle through a static client to make it even easier to send simple HTTP requests.

<?php

// Use the static client directly:
$response = Guzzle\Http\StaticClient::get('http://www.google.com');

// Or, mount the client to \Guzzle to make it easier to use
Guzzle\Http\StaticClient::mount();

$response = Guzzle::get('http://guzzlephp.org');

// Custom options can be passed into requests created by the static client
$response = Guzzle::post('http://guzzlephp.org', [
    'headers' => ['X-Foo' => 'Bar']
    'body'    => ['Foo' => 'Bar'],
    'query'   => ['Test' => 123],
    'timeout' => 10,
    'debug'   => true,
    'save_to' => '/path/to/file.html'
]);

Available request options:

  • headers: Associative array of headers
  • query: Associative array of query string values to add to the request
  • body: Body of a request, including an EntityBody, string, or array when sending POST requests. Setting a body for a GET request will set where the response body is downloaded.
  • auth: Array of HTTP authentication parameters to use with the request. The array must contain the username in index [0], the password in index [2], and can optionally contain the authentication type in index [3]. The authentication types are: "Basic", "Digest". The default auth type is "Basic".
  • cookies: Associative array of cookies
  • allow_redirects: Set to false to disable redirects
  • save_to: String, fopen resource, or EntityBody object used to store the body of the response
  • events: Associative array mapping event names to a closure or array of (priority, closure)
  • plugins: Array of plugins to add to the request
  • exceptions: Set to false to disable throwing exceptions on an HTTP level error (e.g. 404, 500, etc)
  • timeout: Float describing the timeout of the request in seconds
  • connect_timeout: Float describing the number of seconds to wait while trying to connect. Use 0 to wait indefinitely.
  • verify: Set to true to enable SSL cert validation (the default), false to disable, or supply the path to a CA bundle to enable verification using a custom certificate.
  • proxy: Specify an HTTP proxy (e.g. "http://username:[email protected]:10")
  • debug: Set to true to display all data sent over the wire

These options can also be used when creating requests using a standard client:

$client = new Guzzle\Http\Client();
// Create a request with a timeout of 10 seconds
$request = $client->get('http://guzzlephp.org', [], ['timeout' => 10]);
$response = $request->send();

Unit testing

Guzzle uses PHPUnit for unit testing. In order to run the unit tests, you'll first need to install the dependencies of the project using Composer: php composer.phar install --dev. You can then run the tests using vendor/bin/phpunit.

guzzle's People

Contributors

mtdowling avatar hobodave avatar jeremeamia avatar gimler avatar thewilkybarkid avatar adrienbrault avatar fubhy avatar jhedstrom avatar frosas avatar mpv avatar missinglink avatar cordoval avatar hasbridge avatar glennpratt avatar davedevelopment avatar cboden avatar simensen avatar crell avatar zachbadgett avatar pborreli avatar halama avatar lanthaler avatar lstrojny avatar jcarouth avatar ezheidtmann avatar donniewa avatar danack avatar dboune avatar bradfeehan avatar amacneil avatar

Watchers

James Cloos avatar Brandon Burkeen avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.