2016-05-20 1 views
0

J'ai créé un service web de repos qui a une structure mvc, mais j'ai besoin de quelques suggestions pour le rendre meilleur.Contrôleur api de repos

Ce que je sais qu'en c'est:

toute la demande venir au contrôleur avant (index.php)

$request = new Request(); //parse all the elements of the request 

// spl_api_autoload prend en charge pour le chargement des classes

$controller_name = ucfirst($request->url_elements[1]) . 'Controller'; 

    if (class_exists($controller_name)) { 
    $controller = new $controller_name(); 
    $action_name = strtolower($request->verb) . 'Action'; 
    $result = $controller->$action_name($request); 

    } // this acts like a sort of router 

L'URL ressemble à ceci:

index.php/tree/addnode/4/testnode

arbre

-> Ressource

addnode -> Action

4 -> id parent

testnode -> Nom du noeud

Ce que je besoin d'une suggestion dans cette partie ici (contrôleur):

if(isset($request->url_elements[2])) { 

    switch ($request->url_elements[2]) { 
     case 'addroot': 

     if(isset($request->url_elements[3])) { 


     $name = $request->url_elements[3]; 


     $nested = new NestedSetClass(); 

     $nested->createRootNode($name); 


     } 
     return $data; 

     break; 

     case 'addnode': 


     if(isset($request->url_elements[3])) { 

     if(isset($request->url_elements[4])) { 

      $parent = $request->url_elements[3]; 

      $name = $request->url_elements[4]; 


      $nested = new NestedSetClass(); 

      $nested->insertChildNode($name,$parent); 
     } 
     } 
     break; 
     default: 
      # code... 
      break; 
     } 

    } 

Je veux sauter les cas de commutation, Y at-il un Nyway je peux le faire?

Je vous remercie beaucoup pour votre temps

+1

Ce que vous décrivez est pas vraiment API RESTful, cependant. L'API reposante dépend strictement de l'architecte HTTP pour effectuer l'opération. Vous pouvez le renvoyer ici: 'http: // stackoverflow.com/questions/671118/quoi-exactement-est-restful-programmation' Aussi, s'il vous plaît ne pas inventer un autre cadre, ce que vous voulez réellement mettre en œuvre un service web sont déjà là-bas avec une amélioration et un document beaucoup mieux, il est toujours préférable de chercher une solution en premier. –

+0

Merci d'avoir pris le temps de répondre. D'abord je ne l'ai pas inventé, Lorna Jane l'a fait, 2ème il me semble plus logique d'être comme un mvc - la vue encode et résonne juste la réponse sans le rendu de modèle ou d'autres choses.Il répond en JSON, XML ou Html selon le req ... alors qu'est-ce qui ne va pas avec ça? Où voyez-vous le problème? Merci beaucoup !!! P.s j'ai fait la recherche, j'ai regardé des cadres minces et d'autres comme des minces mais pour apprendre j'ai pensé que cet exemple était mieux !!! –

Répondre

0

Quand vous faites quelque chose comme ça je les méthodes html comme si

$app = App::init(); 
try{ 
    //Pass the information here so data can be handled 
    //This makes it easier for other people who are new to oop, but not really correct 
    $app->$method($target, $data) 
}catch(Exception e){ //handle error } 

App Class 
public function get($target, $data); get resource from db 
public function post($target, $data); post resource to db 
etc. 

Sample of post 
function post($target, $data) 
{ 
    $control = new $target(); 
    return $control->handle($data); 


}