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