Recommend this page to a friend! |
Download |
Info | Example | Files | Install with Composer | Download | Reputation | Support forum | Blog | Links |
Ratings | Unique User Downloads | Download Rankings | ||||
72% | Total: 956 | All time: 3,772 This week: 75 |
Version | License | PHP version | Categories | |||
rest 1.0.14 | MIT/X Consortium ... | 5.3.3 | HTTP, PHP 5, Web services |
Description | Author | |||
This package can send REST request to a HTTP server. Innovation Award
|
<?php |
Rest client to make GET, POST, PUT, DELETE, PATCH, etc calls.
To install the package we only have to add the dependency to *composer.json* file:
{
"require": {
"othercode/rest": "*"
}
}
And run the following command:
composer install
To use the Rest we only have to instantiate it and configure the params we want. We can
establish the configuration accessing to the ->configuration->configure_property
, for example
to configure the url of the call we only have to set the ->configuration->url parameter
like we can see as follows:
$api = new \OtherCode\Rest\Rest();
$api->configuration->url = "http://jsonplaceholder.typicode.com/";
or
$api = new \OtherCode\Rest\Rest(new \OtherCode\Rest\Core\Configuration(array(
'url' => 'http://jsonplaceholder.typicode.com/',
)));
After this we have to set the type of call and the parameters that we wil use, in this case we are going to perform a GET request to the "posts/1" endpoint:
$response = $api->get("posts/1");
The rest client will throw a ConnectionException
if there any problem related to the connection.
NOTE: These errors are related to the session cURL, here is the complete list
The available methods to work with are:
get()
Perform a GET request.
Parameters | Type | Description
----------------------------- | ------- | -------------------------------------------
$url
| String | Required. The URL to which the request is made
$data
| Array | Optional. Associative array of data parameters
Return: Response object
head()
Perform a HEAD request.
Parameters | Type | Description
----------------------------- | ------- | -------------------------------------------
$url
| String | Required. The URL to which the request is made
Return: Response object (no body)
post()
Perform a POST request.
Parameters | Type | Description
----------------------------- | ------- | -------------------------------------------
$url
| String | Required. The URL to which the request is made
$data
| Array | Optional. Associative array of data parameters
Return: Response object
delete()
Perform a DELETE request.
Parameters | Type | Description
----------------------------- | ------- | -------------------------------------------
$url
| String | Required. The URL to which the request is made
$data
| Array | Optional. Associative array of data parameters
Return: Response object
put()
Perform a PUT request.
Parameters | Type | Description
----------------------------- | ------- | -------------------------------------------
$url
| String | Required. The URL to which the request is made
$data
| Array | Optional. Associative array of data parameters
Return: Response object
patch()
Perform a PATCH request.
Parameters | Type | Description
----------------------------- | ------- | -------------------------------------------
$url
| String | Required. The URL to which the request is made
$data
| Array | Optional. Associative array of data parameters
Return: Response object
getMetadata()
Return the metadata of the request.
Return: Array
getError()
Return the last known error.
Return: Error
object
getPayloads()
Return an array with the Response
and Request
objects.
Return: Array
setDecoder()
Set a new Decoder.
Parameters | Type | Description
----------------------------- | ------- | -------------------------------------------
$name
| String | Required. The unique name of the decoder.
$decoder
| String | Optional. The class name with namespace of the new decoder.
Return: Rest object
setEncoder()
Set a new Encoder.
Parameters | Type | Description
----------------------------- | ------- | -------------------------------------------
$name
| String | Required. The unique name of the encoder.
$encoder
| String | Optional. The class name with namespace of the new encoder.
Return: Rest object
setModule()
Set a new Module.
Parameters | Type | Description
----------------------------- | ------- | -------------------------------------------
$name
| String | Required. The unique name of the module.
$module
| String | Required. The class name with namespace of the new module.
$hook
| String | Optional. The hook name (after/before) that will trigger the module, 'after' by default.
Return: Rest object
unsetModule()
Unregister a module.
Parameters | Type | Description
----------------------------- | ------ | -------------------------------------------
$moduleName
| String | Required. The unique name of the decoder.
$hook
| String | Optional. The hook name (after/before) from where delete the module.
Return: Rest object
addHeader()
Add a new header.
Parameters | Type | Description
----------------------------- | ------ | -------------------------------------------
$header
| String | Required. The unique name of the header.
$value
| String | Requires. The value of the header.
Return: Rest object
addHeaders()
Add an array of headers.
Parameters | Type | Description
----------------------------- | ------ | -------------------------------------------
$headers
| String | Required. An array of headers.
Return: Rest object
NOTE: We can use the addHeader()
and addHeaders()
methods with the Rest
instance or with the configuration
object
$api->addHeader('some_header','some_value');
$api->addHeaders(array('some_header' => 'some_value','other_header' => 'other_value'));
is the same as
$api->configuration->addHeader('some_header','some_value');
$api->configuration->addHeaders(array('some_header' => 'some_value','other_header' => 'other_value'));
removeHeader()
Remove a header offset.
Parameters | Type | Description
----------------------------- | ------ | -------------------------------------------
$header
| String | Required. The unique name of the header.
Return: Rest object
removeHeaders()
Remove an array of headers.
Parameters | Type | Description
----------------------------- | ------ | -------------------------------------------
$headers
| String | Required. An array of headers to remove.
Return: Rest object
This package allow you to create modules to perform task before and after the request.. To create a new module we only have to use this template:
class CustomModule extends BaseModule
{
public function run()
{
// do something
}
}
IMPORTANT: Any module MUST extends BaseModule
The only method that is mandatory is ->run()
, this method execute your custom code of the module.
Once we have our module we can register it with the ->setModule()
method. This method needs three parameters,
the first one is the name of the module, the second one is the complete namespace of the module, and the third one
is the hook name for our module, it can be "before" and "after" depends when we want to launch our module.
$api->setModule('module_name','Module\Complete\Namespace','after');
For "before" modules you can use all the properties of the Request object.
For "after" modules you can use all the properties of the Response object.
All modules are executed in the order that we register them into the Rest client, this also affect to Decoders and Encoders.
A decoder is a kind of module that allows you to automatically decode de response in xml or json, to use them
we only have to set the decoder we want with the ->setDecoder()
method:
$api->setDecoder("json");
The default allowed values for this method are: *json,xmlandxmlrpc*. All the decoders are always executed in the "after" hook.
To create a new decoder we only have to use this template:
class CustomDecoder extends BaseDecoder
{
protected $contentType = 'application/json';
protected function decode()
{
// decode $this->body
}
}
Like in modules, we have the Response object available to work. The $contentType property is the content-type that will trigger the decoder, in the example above all responses with content-type "application/json" will trigger this decoder.
We can do quick calls using the \OtherCode\Rest\Payloads\Request::call()
method. This static method returns a
Rest instance so we can use all the methods from it.
$response = \OtherCode\Rest\Payloads\Request::call('http://jsonplaceholder.typicode.com')
->setDecoder('json')
->get('/posts/1');
require_once '../autoload.php';
try {
$api = new \OtherCode\Rest\Rest(new \OtherCode\Rest\Core\Configuration(array(
'url' => 'http://jsonplaceholder.typicode.com/',
'httpheader' => array(
'some_header' => 'some_value',
)
)));
$api->setDecoder("json");
$response = $api->get("posts/1");
var_dump($response);
} catch (\Exception $e) {
print "> " . $e->getMessage() . "\n"
}
Files (42) |
File | Role | Description | ||
---|---|---|---|---|
examples (3 files) | ||||
src (1 file, 4 directories) | ||||
tests (9 files, 2 directories) | ||||
LICENSE.md | Lic. | Auxiliary data | ||
phpunit.xml | Data | Auxiliary data | ||
README.md | Doc. | Documentation |
Files (42) | / | examples |
File | Role | Description |
---|---|---|
get_json_request.php | Example | Example script |
get_xml_request.php | Example | Example script |
post_json_request.php | Example | Example script |
Files (42) | / | src |
File | Role | Description | ||
---|---|---|---|---|
Core (4 files) | ||||
Exceptions (4 files) | ||||
Modules (2 files, 2 directories) | ||||
Payloads (3 files) | ||||
Rest.php | Class | Class source |
Files (42) | / | src | / | Core |
File | Role | Description |
---|---|---|
Configuration.php | Class | Class source |
Core.php | Class | Class source |
CurlOpts.php | Class | Class source |
Error.php | Class | Class source |
Files (42) | / | src | / | Exceptions |
File | Role | Description |
---|---|---|
ConfigurationException.php | Class | Class source |
ConnectionException.php | Class | Class source |
ModuleNotFoundException.php | Class | Class source |
RestException.php | Class | Class source |
Files (42) | / | src | / | Modules |
File | Role | Description | ||
---|---|---|---|---|
Decoders (5 files) | ||||
Encoders (4 files) | ||||
BaseModule.php | Class | Class source | ||
ModuleInterface.php | Class | Class source |
Files (42) | / | src | / | Modules | / | Decoders |
File | Role | Description |
---|---|---|
BaseDecoder.php | Class | Class source |
DecoderInterface.php | Class | Class source |
JSONDecoder.php | Class | Class source |
XMLDecoder.php | Class | Class source |
XMLRPCDecoder.php | Class | Class source |
Files (42) | / | src | / | Modules | / | Encoders |
File | Role | Description |
---|---|---|
BaseEncoder.php | Class | Class source |
EncoderInterface.php | Class | Class source |
JSONEncoder.php | Class | Class source |
XMLRPCEncoder.php | Class | Class source |
Files (42) | / | src | / | Payloads |
File | Role | Description |
---|---|---|
Headers.php | Class | Class source |
Request.php | Class | Class source |
Response.php | Class | Class source |
Files (42) | / | tests |
File | Role | Description | ||
---|---|---|---|---|
Modules (1 file, 2 directories) | ||||
Rest (1 file) | ||||
ConfigurationTest.php | Class | Class source | ||
DecodersTest.php | Class | Class source | ||
EncodersTest.php | Class | Class source | ||
ErrorTest.php | Class | Class source | ||
HeadersTest.php | Class | Class source | ||
ModulesTest.php | Class | Class source | ||
QuickCallsTest.php | Class | Class source | ||
ResponseTest.php | Class | Class source | ||
RestTest.php | Test | Unit test script |
Files (42) | / | tests | / | Modules |
The PHP Classes site has supported package installation using the Composer tool since 2013, as you may verify by reading this instructions page. |
Install with Composer |
Version Control | Unique User Downloads | Download Rankings | |||||||||||||||
100% |
|
|
User Ratings | User Comments (1) | ||||||||||||||||||||||||||||||||||
|
|
Applications that use this package |
If you know an application of this package, send a message to the author to add a link here.
Related pages |
Git repository |