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 : Sélectionner tout - Visualiser dans une fenêtre à part
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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