Ho una semplice API RESTful che è già stata creata utilizzando Slim Framework.Genera documentazione automatica SlimFramework
Esempio di codice:
$app->group('/settings','authenticate','is_admin',function() use($app){
$app->get('/gear', function() use ($app) {
...
});
$app->group('/users',function() use($app){
$app->get('/', function() use ($app) {...});
$app->post('/', function() use ($app) {...});
$app->put('/:id', function ($id) use ($app) {...});
$app->delete('/:id', function() use ($app) {...});
});
});
Ora, ho bisogno di costruire una semplice pagina che lista i gruppi tutti i miei percorsi come 'risorse' e nido gli itinerari sotto ogni gruppo in modo che io possa aggiungere qualche tipo di documentazione di testo per ciascun gruppo/metodo di percorso che conserverò più avanti nel database o nella memoria dei file.
In sintesi le mie domande sono:
- C'è qualcosa di simile esiste già?
- Come è possibile elencare tutti i percorsi e i gruppi di percorsi in Slim Framework?
mio Hack corrente:
$app->get('/', function() use ($app) {
$data=[];
//$router->routes is a protected variable, so i had to change it to public, same for $r->methods and pattern
foreach($app->router->routes as $r){
$x = explode('/',$r->pattern);
$x = $x[1];
$data[$x][$r->methods[0]][]=$r->pattern."[".implode(',',$r->middleware)."]";
}
print_r($data);
});
mi dà un risultato in questo modo:
Array
(
[auth] => Array
(
[GET] => Array
(
[0] => /auth/me[authenticate]
[1] => /auth/logout[]
)
[POST] => Array
(
[0] => /auth/login[]
)
[DELETE] => Array
(
[0] => /auth/logout[]
)
)
[settings] => Array
(
[GET] => Array
(
[0] => /settings/classes[authenticate,is_admin]
[1] => /[authenticate,is_admin]
)
[POST] => Array
(
[0] => /settings/grades/:id/class[authenticate,is_admin]
[1] => /settings/grades/:id/subject[authenticate,is_admin]
[2] => /settings/departments/:id/grade[authenticate,is_admin]
[3] => /settings/subjects/:id/skills[authenticate,is_admin]
)
)
Abbiamo utilizzato [Swagger] (http://swagger.io/) per le nostre API REST basate su Java al lavoro. È molto carino. Tuttavia richiede di rivelarlo secondo le sue specifiche. Detto questo, esiste un progetto [Swagger-PHP] (https://github.com/zircote/swagger-php/) che consente di utilizzare blocchi/annotazioni doc standard per farlo. Probabilmente mi piacerebbe provare ad agganciare qualcosa di simile, o semplicemente regolare [PHPDocumentor] (http://www.phpdoc.org/) (anche se phpdoc dosnt ha tag specifici dell'API fuori dalla scatola). – prodigitalson