Description
Requests is a HTTP library written in PHP, for human beings. It is roughly
based on the API from the excellent Requests Python
library. Requests is ISC
Licensed (similar to
the new BSD license) and has no dependencies, except for PHP 5.2+.
Despite PHP's use as a language for the web, its tools for sending HTTP requests
are severely lacking. cURL has an
interesting API, to say the
least, and you can't always rely on it being available. Sockets provide only low
level access, and require you to build most of the HTTP response parsing
yourself.
We all have better things to do. That's why Requests was born.
Requests alternatives and similar libraries
Based on the "HTTP" category.
Alternatively, view Requests alternatives based on common mentions on social networks and blogs.
-
HTTPFul
A Chainable, REST Friendly, PHP HTTP Client. A sane alternative to cURL. -
PHP VCR
Record your test suite's HTTP interactions and replay them during future test runs for fast, deterministic, accurate tests. -
guzzler
Supercharge your app or SDK with a testing library specifically for Guzzle
Clean code begins in your IDE with SonarLint
* Code Quality Rankings and insights are calculated and provided by Lumnify.
They vary from L1 to L5 with "L5" being the highest.
Do you think we are missing an alternative of Requests or a related project?
README
Requests for PHP
Requests is a HTTP library written in PHP, for human beings. It is roughly based on the API from the excellent Requests Python library. Requests is ISC Licensed (similar to the new BSD license) and has no dependencies, except for PHP 5.2+.
Despite PHP's use as a language for the web, its tools for sending HTTP requests are severely lacking. cURL has an interesting API, to say the least, and you can't always rely on it being available. Sockets provide only low level access, and require you to build most of the HTTP response parsing yourself.
We all have better things to do. That's why Requests was born.
$headers = array('Accept' => 'application/json');
$options = array('auth' => array('user', 'pass'));
$request = Requests::get('https://api.github.com/gists', $headers, $options);
var_dump($request->status_code);
// int(200)
var_dump($request->headers['content-type']);
// string(31) "application/json; charset=utf-8"
var_dump($request->body);
// string(26891) "[...]"
Requests allows you to send HEAD, GET, POST, PUT, DELETE, and PATCH HTTP requests. You can add headers, form data, multipart files, and parameters with basic arrays, and access the response data in the same way. Requests uses cURL and fsockopen, depending on what your system has available, but abstracts all the nasty stuff out of your way, providing a consistent API.
Features
- International Domains and URLs
- Browser-style SSL Verification
- Basic/Digest Authentication
- Automatic Decompression
- Connection Timeouts
Installation
Install with Composer
If you're using Composer to manage dependencies, you can add Requests with it.
composer require rmccue/requests
or
{
"require": {
"rmccue/requests": ">=1.0"
}
}
Install source from GitHub
To install the source code:
$ git clone git://github.com/WordPress/Requests.git
And include it in your scripts:
require_once '/path/to/Requests/library/Requests.php';
You'll probably also want to register an autoloader:
Requests::register_autoloader();
Install source from zip/tarball
Alternatively, you can fetch a tarball or zipball:
$ curl -L https://github.com/WordPress/Requests/tarball/master | tar xzv
(or)
$ wget https://github.com/WordPress/Requests/tarball/master -O - | tar xzv
Using a Class Loader
If you're using a class loader (e.g., Symfony Class Loader) for PSR-0-style class loading:
$loader->registerPrefix('Requests', 'path/to/vendor/Requests/library');
Documentation
The best place to start is our prose-based documentation, which will guide you through using Requests.
After that, take a look at the documentation for
Requests::request()
, where all the parameters are fully
documented.
Requests is 100% documented with PHPDoc. If you find any problems with it, create a new issue!
Testing
Requests strives to have 100% code-coverage of the library with an extensive set of tests. We're not quite there yet, but we're getting close.
To run the test suite, first check that you have the PHP JSON extension enabled. Then simply:
$ phpunit
If you'd like to run a single set of tests, specify just the name:
$ phpunit Transport/cURL
Contribute
- Check for open issues or open a new issue for a feature request or a bug
- Fork the repository on Github to start making your changes to the
master
branch (or branch off of it) - Write a test which shows that the bug was fixed or that the feature works as expected
- Send a pull request and bug me until I merge it
*Note that all licence references and agreements mentioned in the Requests README section above
are relevant to that project's source code only.