NAME
Apache2::REST - Micro framework for REST API implementation under apache2/mod_perl2/apreq2
VERSION
Version 0.03
QUICK TUTORIAL
1. Implement a Apache2::REST::Handler
This module will handle the root resource of your REST API.
package MyApp::REST::API ;
use warnings ;
use strict ;
# Implement the GET HTTP method.
sub GET{
my ($self, $request, $response) = @_ ;
$response->data()->{'api_mess'} = 'Hello, this is MyApp REST API' ;
return Apache2::Const::HTTP_OK ;
}
# Authorize the GET method.
sub isAuth{
my ($self, $method, $req) = @ _;
return $method eq 'GET';
}
1 ;
2. Configure apache2
Apache2::REST is a mod_perl2 handler.
In your apache configuration:
# Make sure you
LoadModule apreq_module modules/mod_apreq2.so
LoadModule perl_module modules/mod_perl.so
# Load Apache2::REST
PerlModule Apache2::REST
# Let Apache2::REST handle the /
# and set the root handler of the API
<Location />
SetHandler perl-script
PerlSetVar Apache2RESTHandlerRootClass "MyApp::REST::API"
PerlResponseHandler Apache2::REST
</Location>
See Apache2::REST::Handler for about how to implement a handler.
Then access http://yourhost/
. You should see your greeting message from your MyApp::REST::API handler.
See Apache2::REST::Overview for more details about how it works.
PARTICIPATE
See the Google project page for wiki and collaborative tools: http://code.google.com/p/apache2rest/
CONFIGURATION
This mod_perl2 handler supports the following configurations (Via PerlSetVar):
Supported variables
Apache2RESTAPIBase
The base of the API application. If ommitted, /
is assumed. Use this to implement your API as a sub directory of your server.
Example:
<Location /api/>
...
PerlSetVar Apache2RESTAPIBase "/api/" ;
</Location>
Apache2RESTHandlerRootClass
root class of your API implementation. If ommitted, this module will feature the demo implementation Accessible at http://localhost/test/
(providing you installed this at the root of the server)
Example:
PerlSetVar Apache2RESTHandlerRootClass "MyApp::REST::API"
Apache2RESTParamEncoding
Encoding of the parameters sent to this API. Default is UTF-8. Must be a value compatible with Encode
Example:
PerlSetVar Apache2RESTParamEncoding "UTF-8"
Apache2RESTAppAuth
Specifies the module to use for application authentication. See Apache2::REST::AppAuth for API.
Example:
PerlSetVar Apache2RESTAppAuth "MyApp::REST::AppAuth"
Apache2RESTWriterSelectMethod
Use this to specify the writer selection method. If not specifid the writer is selected using the fmt
parameter.
Valid values are:
param (the default) - With this method, the writer is selected from the fmt parameter. For instance '?fmt=json'
extension - With this method, the writer is selected from the url extension. For instance : '/test.json'
Example:
When using 'param' (default) ask for json format like this: http://localhost/test/?fmt=json
When using 'extension' : http://localhost/test.json
Apache2RESTWriterDefault
Sets the default writer. If ommitted, the default is xml
. Available writers are xml
, json
, yaml
, perl
, bin
command line REST client
This module comes with a commandline REST client to test your API:
$ restclient
usage: restclient -r <resource URL> [ -m <http method> ] [ -p <http paramstring> ] [ -h <http headers(param syntax)> ]
It is written as a thin layer on top of REST::Client
Apache2RESTWriterRegistry
Use this to register your own Writer Classes.
For instance, you want to register your writer under the format name myfmt:
PerlAddVar Apache2RESTWriterRegistry 'myfmt'
PerlAddVar Apache2RESTWriterRegistry 'MyApp::REST::Writer::mywriter"
MyApp::REST::Writer::mywriter
Must be a subclass of Apache2::REST::Writer
.
You can now use your new registered writer by using fmt=myfmt.
AUTHOR
Jerome Eteve, <jerome at eteve.net>
BUGS
Please report any bugs or feature requests to bug-apache2-rest at rt.cpan.org
, or through the web interface at http://rt.cpan.org/NoAuth/ReportBug.html?Queue=Apache2-REST. I will be notified, and then you'll automatically be notified of progress on your bug as I make changes.
SUPPORT
You can find documentation for this module with the perldoc command.
perldoc Apache2::REST
AnnoCPAN: Annotated CPAN documentation
CPAN Ratings
RT: CPAN's request tracker
Search CPAN
COPYRIGHT & LICENSE
Copyright 2009 Careerjet Ltd, all rights reserved.
This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself.