Assuming you are using the Zend Framework 2 and want to implement a REST endpoint in a quick and fully functional way.
ZF-Rest is, more or less, the official rest module for zf2. But, the documentation is not available - nor planned right now. Thats why I this blog entry will boost your knowledge and speed up the time until you have finished your first zf2 rest endpoint.
Installation and Setup
#add the following line to you composer.json
"zfcampus/zf-rest": "1.0.3"
You need to add the following entries in your to "config/autload/application.config".
array(
//your modules
'ZF\ApiProblem',
'ZF\ContentNegotiation',
'ZF\Hal',
'ZF\MvcAuth',
'ZF\OAuth2',
'ZF\Rest'
);
Minimal Configuration (module.config.php)
array key "zf-rest"
//MyRestController is a virtual Controller
'My\\Module\\Namespace\\MyRestController' => array(
//mandatory - available are GET, POST, PUT, PATCH, DELETE
'collection_http_methods' => array(
'GET'
),
//mandatory - available are GET, POST, PUT, PATCH, DELETE
'entity_http_methods' => array(
'GET'
),
//virtual name - its the name the collection entries are getting in the HAL-repesentation
'collection_name' => 'items',
'route_name' => 'my_rest_route_name',
'route_identifier_name' => 'id',
//this is the only file you really need to code/implement
'listener' => 'My\\Module\\Namespace\\MyListener'
),
array key "router/routes"
'my_rest_route_name' => array(
'type' => 'Zend\Mvc\Router\Http\Segment',
'options' => array(
'route' => '/my/rest/endpoint/[/:id]',
'defaults' => array(
//MyRestController is a virtual Controller
//The name is needed to map the module configuration to the endpoint
'controller' => 'My\\Module\\Namespace\\MyRestController'
)
),
Optional Configuration Values
Based on the source code from RestControllerFactory.php, following configuration keys are optional (mention as mandatory in the current README.md).
- resource_identifiers
- identifier
- controller_class
- entity_class
- collection_class