rmccue / requests
A HTTP library written in PHP, for human beings.
Installs: 26 950 881
Dependents: 309
Suggesters: 11
Security: 1
Stars: 3 576
Watchers: 123
Forks: 499
Open Issues: 110
Requires
- php: >=5.6
- ext-json: *
Requires (Dev)
- dealerdirect/phpcodesniffer-composer-installer: ^0.7
- php-parallel-lint/php-console-highlighter: ^0.5.0
- php-parallel-lint/php-parallel-lint: ^1.3.1
- phpcompatibility/php-compatibility: ^9.0
- requests/test-server: dev-main
- roave/security-advisories: dev-latest
- squizlabs/php_codesniffer: ^3.6
- wp-coding-standards/wpcs: ^2.0
- yoast/phpunit-polyfills: ^1.0.0
Suggests
- ext-curl: For improved performance
- ext-openssl: For secure transport support
- ext-zlib: For improved performance when decompressing encoded streams
- art4/requests-psr18-adapter: For using Requests as a PSR-18 HTTP Client
- dev-develop
- v2.0.14
- v2.0.13
- v2.0.12
- v2.0.11
- v2.0.10
- v2.0.9
- v2.0.8
- v2.0.7
- v2.0.6
- v2.0.5
- v2.0.4
- v2.0.3
- 2.0.2
- v2.0.1
- v2.0.0
- v1.8.1
- v1.8.0
- v1.7.0
- v1.6.1
- v1.6.0
- dev-add/simplified-local-testserver
- dev-feature/use-ubuntu-22
- dev-feature/ghactions-update-python
- dev-stable
- dev-release/2.0.14
- dev-feature/auto-update-cacert
- dev-feature/ghactions-update-for-php-8.4-release
- dev-dependabot/github_actions/codecov/codecov-action-5
- dev-feature/ghactions-add-extra-port-check
- dev-test/are-proxy-tests-running
- dev-feature/mark-sensitive-parameters
- dev-319/better-test-attempt-take-two
- dev-feature/add-tests-for-edge-case-url-handling
- dev-feature/220-add-param-to-curl-after-send-hook
- dev-TEMP/debug-curl-close
- dev-feature/110-curl_multi-select
- dev-release/1.8.1
- dev-stream-input
- dev-one-dot-six
This package is auto-updated.
Last update: 2024-12-11 14:03:20 UTC
README
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.6.20+.
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 = WpOrg\Requests\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": "^2.0" } }
Install source from GitHub
To install the source code:
$ git clone git://github.com/WordPress/Requests.git
Next, include the autoloader in your scripts:
require_once '/path/to/Requests/src/Autoload.php';
You'll probably also want to register the autoloader:
WpOrg\Requests\Autoload::register();
Install source from zip/tarball
Alternatively, you can fetch a tarball or zipball:
$ curl -L https://github.com/WordPress/Requests/tarball/stable | tar xzv (or) $ wget https://github.com/WordPress/Requests/tarball/stable -O - | tar xzv
Using a Class Loader
If you're using a class loader (e.g., Symfony Class Loader) for PSR-4-style class loading:
$loader = new Psr4ClassLoader(); $loader->addPrefix('WpOrg\\Requests\\', 'path/to/vendor/Requests/src'); $loader->register();
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
\WpOrg\Requests\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!
Test Coverage
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.
Requests and PSR-7/PSR-18
PSR-7 describes common interfaces for representing HTTP messages. PSR-18 describes a common interface for sending HTTP requests and receiving HTTP responses.
Both PSR-7 as well as PSR-18 were created after Requests' conception. At this time, there is no intention to add a native PSR-7/PSR-18 implementation to the Requests library.
However, the amazing Artur Weigandt has created a package, which allows you to use Requests as a PSR-7 compatible PSR-18 HTTP Client. If you are interested in a PSR-7/PSR-18 compatible version of Requests, we highly recommend you check out this package.
Contribute
Contributions to this library are very welcome. Please read the Contributing guidelines to get started.