NAME
Plack::Middleware::REST - Route PSGI requests for RESTful web applications
VERSION
version 0.01
SYNOPSIS
# $get, $create, $update, $list, $app must be PSGI applications
builder {
enable 'REST',
get => $get, # HTTP GET on a resource
create => $create, # HTTP POST in '/'
upsert => $update, # HTTP PUT on a resource
list => $list, # HTTP GET on '/'
pass_through => 1; # pass if no defined REST request
$app;
};
DESCRIPTION
Plack::Middleware::REST routes HTTP requests, given in PSGI request format, based on the principles of Representational State Transfer (REST). In short, the application manages a set of E<resources> on a common base URL, each identified by its URL. One can retrieve, create, update, delete, and list resources based on HTTP request methods.
Let's say an instance of Plack::Middleware::REST is mounted at the base URL http://example.org/item/. The following HTTP request types can be recognized, once they have been assigned on constructing the middleware:
POSTathttp://example.org/item/-
Calls the PSGI application
createto create a new resource with URL assigned by the application. GETathttp://example.org/item/123-
Calls the application
getto retrieve an existing resource identified byhttp://example.org/item/123. PUTathttp://example.org/item/123-
Calls the PSGI application
upsertto either update an existing resource identified byhttp://example.org/item/123or to create a new resource with this URL. The application may reject updates and/or creation of new resources, acting like an update or insert method. DELETEathttp://example.org/item/123-
Calls the PSGI application
deleteto delete an existing resource identified byhttp://example.org/item/123. GETathttp://example.org/item/-
Calls the PSGI application
listto get a list of existing resources.
Additional HTTP request types HEAD, OPTIONS, and PATCH may be added in a later version of this module.
Other requests result either result in a PSGI response with error code 405 and a list of possible request types in the Accept header, or the request is passed to the underlying application in the PSGI middleware stack, if option pass_through is set.
CONFIGURATION
The options get, create, upsert, delete, list can be set to PSGI applications to enable the corresponding REST request type. One can also use string aliases, including app to pass the request in the middleware stack:
builder {
enable 'REST',
get => 'app', # pass GET requests on resource to $wrapped
create => $create, # pass POST to base URL to $create
upsert => $update; # pass PUT requests on resources to $update
pass_through => 0; # respond other requests with 405
$wrapped;
};
SEE ALSO
See Plack::Middleware::Negotiate to add content negotiation.
AUTHOR
Jakob Voß <voss@gbv.de>
COPYRIGHT AND LICENSE
This software is copyright (c) 2012 by Jakob Voß.
This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself.
2 POD Errors
The following errors were encountered while parsing the POD:
- Around line 99:
Unknown E content in E<resources>
- Around line 168:
Non-ASCII character seen before =encoding in 'Voß'. Assuming UTF-8