The London Perl and Raku Workshop takes place on 26th Oct 2024. If your company depends on Perl, please consider sponsoring and/or attending.

NAME

Role::REST::Client - REST Client Role

VERSION

version 0.13

SYNOPSIS

{
	package RESTExample;

	use Moose;
	with 'Role::REST::Client';

	sub bar {
		my ($self) = @_;
		my $res = $self->post('foo/bar/baz', {foo => 'bar'});
		my $code = $res->code;
		my $data = $res->data;
		return $data if $code == 200;
   }

}

my $foo = RESTExample->new(
	server =>      'http://localhost:3000',
	type   =>      'application/json',
	clientattrs => {timeout => 5},
);

$foo->bar;

# controller
sub foo : Local {
	my ($self, $c) = @_;
	my $res = $c->model('MyData')->post('foo/bar/baz', {foo => 'bar'});
	my $code = $res->code;
	my $data = $res->data;
	...
}

DESCRIPTION

This REST Client role makes REST connectivety easy.

Role::REST::Client will handle encoding and decoding when using the four HTTP verbs.

GET
PUT
POST
DELETE
OPTIONS
HEAD

Currently Role::REST::Client supports these encodings

application/json
application/x-www-form-urlencoded
application/xml
application/yaml

x-www-form-urlencoded only works for GET and POST, and only for encoding, not decoding.

NAME

Role::REST::Client - REST Client Role

METHODS

methods

Role::REST::Client implements the standard HTTP 1.1 verbs as methods

post
get
head
put
delete
options

All methods take these parameters

url - The REST service
data - The data structure (hashref, arrayref) to send. The data will be encoded
	according to the value of the I<type> attribute.
args - hashref with arguments to augment the way the call is handled.

args - the optional argument parameter can have these entries

deserializer - if you KNOW that the content-type of the response is incorrect,
you can supply the correct content type, like
my $res = $self->post('foo/bar/baz', {foo => 'bar'}, {deserializer => 'application/yaml'});

preserve_headers - set this to true if you want to keep the headers between calls

All methods return a response object dictated by _rest_response_class. Set to Role::REST::Client::Response by default.

ATTRIBUTES

user_agent

An UA object which can do ->request method, for instance: HTTP::Tiny, LWP::UserAgent, etc.

server

Url of the REST server.

e.g. 'http://localhost:3000'

type

Mime content type,

e.g. application/json

httpheaders

You can set any http header you like with set_header, e.g. $self->set_header($key, $value) but the content-type header will be overridden.

persistent_headers

A hashref containing headers you want to use for all requests. Set individual headers with set_persistent_header, clear the hashref with clear_persistent_header.

clientattrs

Attributes to feed the user agent object (which defaults to HTTP::Tiny)

e.g. {timeout => 10}

AUTHOR

Kaare Rasmussen, <kaare at cpan dot com>

BUGS

Please report any bugs or feature requests to bug-role-rest-client at rt.cpan.org, or through the web interface at http://rt.cpan.org/NoAuth/ReportBug.html?Queue=Role-REST-Client.

COPYRIGHT & LICENSE

Copyright 2012 Kaare Rasmussen, all rights reserved.

This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself, either Perl version 5.8.8 or, at your option, any later version of Perl 5 you may have available.

AUTHOR

Kaare Rasmussen <kaare at cpan dot net>

COPYRIGHT AND LICENSE

This software is copyright (c) 2012 by Kaare Rasmussen.

This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself.