Gestion du @path dans l'url pour 'ModuleRequest' de la forme : host.io/api/moduleName/methodName/?

This commit is contained in:
xdrm-brackets 2016-06-03 10:06:47 +02:00
parent 07d608fdaf
commit 629e088588
3 changed files with 19 additions and 38 deletions

View File

@ -98,8 +98,8 @@
// Api
$R->post('api.+', function(){
$request = ModuleRequest::fromPost($_POST);
$R->post('api(?:/(.*))?', function($url){
$request = ModuleRequest::fromPost($url, $_POST);
$answer = $request->dispatch();
echo $answer->serialize();

View File

@ -252,49 +252,15 @@
}
/* DESERIALISATION ET CREATION D'UN OBJET
*
* @jsonString<String> Json au format string contenant les donnees
*
* @return instance<ModuleRequest> Retourne un objet de type <ModuleRequest>
*
*/
public static function fromString($jsonString){
$json = json_decode( $jsonString, true );
// Verification du parsage
if( $json == null )
return new ModuleRequest();
// Verification des parametres
if( !isset($json['path']) )
return new ModuleRequest();
// On definit $params au cas ou il soit vide
$params = $json;
// On retire le @path de @params
unset($params['path']);
return new ModuleRequest($json['path'], $params);
}
/* DESERIALISATION A PARTIR DES DONNEES POST
*
* @url<String> Contenu de l'url après api/ (si existe)
* @post<Array> Tableau des donnes $_POST => @path + @data (opt)
*
* @return instance<ModuleRequest> Retourne un objet de type <ModuleRequest>
*
*/
public static function fromPost($post){
public static function fromPost($url, $post){
/* [0] Verification de l'authentification
=========================================================*/
// On definit le token
@ -303,9 +269,19 @@
/* [1] On verifie que le @path est renseigne
=========================================================*/
/* (1) Si le path est dans @url */
$pathInUrl = strlen($url[0]) > 0 && preg_match('#^([\w_-]+)/([\w_-]+)/?$#', $url[0], $urlMatches);
// On l'utilise pour le chemin
if( $pathInUrl )
$post['path'] = $urlMatches[1].'/'.$urlMatches[2];
/* (2) On vérifie dans tous les cas si le path existe */
if( !isset($post['path']) )
return new ModuleRequest();
/* [2] On verifie que @data est renseigne
=========================================================*/
// Si variable n'existe pas, on cree un tableau vide
@ -314,6 +290,8 @@
// On retire le @path de @params
unset($params['path']);
/* [3] On met les paramètres JSON en JSON (si ils décodent sans erreur)
=========================================================*/
foreach($params as $name=>$value){

View File

@ -139,6 +139,9 @@
// Code Http
ManagerError::setHttpCode($this->error);
// Type de contenu
// header('Content-Type: application/json');
// On rajoute l'erreur au message
$returnData = array_merge(
array(