/** * @param RouteCollection $routes */ public static function setRoutes(RouteCollection $routes) { $routes->group(function (RouteCollection $routes) { $routes->tag('pet'); $routes->get('pets', 'PetController@index')->returns()->many(PetResourceDefinition::class)->summary('Find pets'); $routes->get('pets/{id}', 'PetController@show')->parameters()->path('id')->required()->int()->returns()->one(PetResourceDefinition::class)->summary('Show a pet'); }); }
/** * Set all routes for this controller * @param RouteCollection $routes */ public static function setRoutes(RouteCollection $routes) { $routes->group(function (RouteCollection $routes) { $routes->tag('users'); $routes->get('users/{id}', 'UserController@show')->parameters()->path('id')->required()->returns()->one(UserResourceDefinition::class)->summary('Return a user object'); $routes->get('users', 'UserController@index')->returns()->many(UserResourceDefinition::class)->summary('Return all users'); }); }
/** * @param RouteCollection $routes */ public static function setRoutes(RouteCollection $routes) { $routes->group(function (RouteCollection $routes) { $routes->tag('photos'); $routes->get('pets/{id}/photos', 'PhotoController@index')->parameters()->path('id')->int()->required()->returns()->many(PhotoResourceDefinition::class)->summary('Show all photos of a pet'); }); }
<?php use CatLab\Charon\Collections\RouteCollection; /* * API v1 */ $routes = new RouteCollection(['prefix' => '/api/v1/', 'namespace' => 'Api\\V1\\Controllers', 'middleware' => ['cors'], 'suffix' => '.{format?}', 'security' => ['oauth2' => ['full']]]); $routes->group([], function (RouteCollection $routes) { // All endpoints have these parameters $routes->parameters()->path('format')->enum(['json'])->describe('Output format')->default('json'); // All endpoints can have these return values $routes->returns()->statusCode(403)->describe('Authentication error'); $routes->returns()->statusCode(404)->describe('Entity not found'); // Swagger documentation $routes->get('description', 'DescriptionController@description')->tag('description'); // Controllers: oauth middleware is required $routes->group(['middleware' => ['oauth']], function (RouteCollection $routes) { /* * List all controllers */ \App\Http\Api\V1\Controllers\UserController::setRoutes($routes); \App\Http\Api\V1\Controllers\PetController::setRoutes($routes); \App\Http\Api\V1\Controllers\PhotoController::setRoutes($routes); }); }); return $routes;