Name

REST::Consumer - General client for interacting with json data in HTTP Restful services

Synopsis

This module provides an interface that encapsulates building an http request, sending the request, and parsing a json response. It also retries on failed requests and has configurable timeouts.

Usage

To make a request, create an instance of the client and then call the get(), post(), put(), or delete() methods

# Required parameters:
my $client = REST::Consumer->new(
	host => 'service.somewhere.com',
	port => 80,
);


# Optional parameters:
my $client = REST::Consumer->new(
	host       => 'service.somewhere.com',
	port       => 80,
	timeout    => 60, (default 10)
	retry      => 10, (default 3)
	verbose    => 1, (default 0)
	keep_alive => 1, (default 0)
	agent      => 'Service Monkey', (default REST-Consumer/$VERSION)
	auth => {
		type => 'basic',
		username => 'yep',
		password => 'nope',
	},
);

Methods

get ( path => PATH, params => [] )

Send a GET request to the given path with the given arguments

my $deserialized_result = $client->get(
	path => '/path/to/resource',
	params => {
		field => value,
		field2 => value2,
	},
);

the 'params' arg can be a hash ref or array ref, depending on whether you need multiple instances of the same key

my $deserialized_result = $client->get(
	path => '/path/to/resource',
	params => [
		field => value,
		field => value2,
		field => value3,
	]
);
post (path => PATH, params => [key => value, key => value], content => {...} )

Send a POST request with the given path, params, and content. The content must be a data structure that can be serialized to JSON.

# content is serialized to json by default
my $deserialized_result = $client->post(
	path => '/path/to/resource',
	content => { field => value }
);


# if you don't want it serialized, specify another content type
my $deserialized_result = $client->post(
	path => '/path/to/resource',
	content => { field => value }
	content_type => 'multipart/form-data',
);

# you can also specify headers if needed
my $deserialized_result = $client->post(
	path => '/path/to/resource',
	headers => [
		'x-custom-header' => 'monkeys',	
	],
	content => { field => value }
);
delete (path => PATH, params => [])

Send a DELETE request to the given path with the given arguments

my $result = $client->delete(
	path => '/path/to/resource',
	params => [
		field => value,
		field2 => value2,
	]
);
get_response (path => PATH, params => [key => value, key => value], headers => [key => value,....], content => {...}, method => METHOD )

Send a request with path, params, and content, using the specified method, and get a response object back

my $response_obj = $client->get_response(
	method => 'GET',
	path   => '/path/to/resource',
	headers => [
		'x-header' => 'header',
	],
	params => [
		field => value,
		field2 => value2,
	],
);
get_processed_response (path => PATH, params => [key => value, key => value], headers => [key => value,....], content => {...}, method => METHOD)

Send a request with path, params, and content, using the specified method, and get the deserialized content back

get_http_request ( path => PATH, params => [PARAMS], headers => [HEADERS], content => [], method => '' )

get an HTTP::Request object for the given input