Bonjour,
J'aimerais mettre en place une api REST avec Cakephp, j'ai bien suivi la doc du book de cake à savoir :
1 - Modification Router
Router::mapResources('Apicontroller');
Router::parseExtensions();
2 - Création du controller
<pre>
App::uses('AppController', 'Controller');
class Apicontroller extends AppController {
public $scaffold;
public $components = array('RequestHandler');
public $uses = null; // pas de model, pas de table
public function beforeFilter(){
parent::beforeFilter();
$this->Auth->allow();
}
public function view($id) {
$this->loadModel('Post');
$post = $this->Post->findById($id);
$this->set(array(
'post' => $post,
'_serialize' => array('post')
));
//debug($post);
}
</pre>
3 - Appel de l'url
Quand je fais :
http://localhost:8888/Cakephp/apicontroller/view/5
Je récup bien le Post 5 (quand je débug)
Si je fais
http://localhost:8888/Cakephp/apicontroller/5.json
erreur => Fatal error: Cannot access empty property in /Applications/MAMP/htdocs/StoreAdd/lib/Cake/Controller/Controller.php on line 437
et ma 2ème erreur et que je dois obligatoirement me logguer pour appeler les API sinon il me redirige vers /users/login.
Je ne comprend pas pourquoi il fait cette redirection
Merci de vos retours
Bonsoir.
Si tu connais les conventions de CakePHP, il ne faut pas faire Apicontroller, mais ApiController.
Ensuite, ce n'est pas Router::mapResources('Apicontroller');, mais Router::mapResources('Api');.
Pour terminer, si tu veux autoriser l'extension json, il te faut l'indiquer dans les extensions autorisées, soit dans ton cas : Router::parseExtensions('json');.
Merci Lartak,
Le problème venait de Router, j'ai mis Apicontroller au lieu de Api ....
thx