Création d'un REST API avec silex pour une interface Backbone.js
Bonjour à tous,
je souhaiterais réaliser un REST API avec silex pour une interface backbone.js
Seulement j'ai beaucoup de mal à réaliser ça sur silex.
J'ai suivis ce tutoriel plutôt bien expliqué : http://cambridgesoftware.co.uk/blog/...work-%20-mysql
Seulement impossible de le faire marcher
Voici mon code :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47
| require_once __DIR__.'/../../vendor/autoload.php';
$app = new Silex\Application();
$app['debug'] = true;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
use Silex\Provider\MonologServiceProvider;
$app->register(new Silex\Provider\DoctrineServiceProvider(), array(
'db.options' => array(
'driver' => 'pdo_mysql',
'dbhost' => 'localhost',
'dbname' => 'todo',
'user' => 'root',
'password' => ''
),
));
//GET /{resource}/{id} Show
$app->get('/todos/{id}', function ($id) use ($app) {
$sql = "SELECT * FROM todo WHERE id = ?";
$post = $app['db']->fetchAssoc($sql, array((int) $id));
return new Response(json_encode($post), 200, array('Content-Type' => 'application/json'));
});
//POST /{resource} Create
$app->post('/todos', function (Request $request) use ($app) {
$data = json_decode($request->getContent());
$todo = $app['db']->insert('todo', array('content' => $data->title));
return new Response(json_encode($data), 200, array('Content-Type' => 'application/json'));
});
//PUT /{resource}/{id} Update
$app->put('/todos/{id}', function ($id, Request $request) use ($app) {
$data = json_decode($request->getContent());
$todo = $app['db']->update('todo',$data,array('id' => $id));
return new Response('Todo updated', 200);
});
//DELETE /{resource}/{id} Destroy
$app->delete('/todos/{id}', function ($id) use ($app) {
$todo = $app['db']->delete('todo', array('id' => $id));
return new Response('Todo deleted', 200);
});
$app->run(); |
J'ai l'erreur suivante quand je fais un GET
Code:
No route found for "GET /todos": Method Not Allowed (Allow: POST
La requête POST marche nikel
La requête PUT m'ajoute 2x la transformation dans la bde, j'imagine donc qu'elle exécute une requête POST 2x ?
Et la requête DELETE ne marche pas...
J'ai retourné le problème dans tous les sens et je ne vois vraiment pas ce qui ne vas pas... :? Des avis :?