2009-03-16 5 views
0

Comment créer une API pour mon application Web? Je regarde dans Zend_Rest mais je ne peux pas saisir l'idée derrière elle.Zend Framework + Une API pour mon application

Fondamentalement, je voudrais quelque chose comme cet exemple:

$technorati = new Zend_Rest_Client('http://api.technorati.com/bloginfo'); 
$technorati->key($key); 
$technorati->url('http://pixelated-dreams.com'); 
$result = $technorati->get(); 
echo $result->firstname() .' '. $result->lastname(); 

Mais je suis totalement perdu sur la façon de le mettre en œuvre en utilisant Zend Framework. Aurais-je besoin d'utiliser Zend_Rest_Server? Toute forme de conseils sur la façon de le faire serait grandement appréciée ...

Répondre

2

Quel est le problème avec le Zend Framework documentation on Zend_Rest_Server? Il est un exemple absolument minimalistes sur la façon d'utiliser Zend_Rest_Server:

/** 
* Say Hello 
* 
* @param string $who 
* @param string $when 
* @return string 
*/ 
function sayHello($who, $when) 
{ 
    return "Hello $who, Good $when"; 
} 

$server = new Zend_Rest_Server(); 
$server->addFunction('sayHello'); 
$server->handle(); 

Ou avez-vous un problème spécifique?

EDIT: En ce qui concerne votre question sur l'intégration MVC Je pense que cela introduirait une surcharge extrem avec beaucoup de fonctionnalités que vous n'avez pas besoin de webservices. Néanmoins, je devrais être possible d'intégrer le service dans le MVC sans aucun problème majeur (à l'exception des frais généraux).

class Hello 
{ 
    /** 
    * Say Hello 
    * 
    * @param string $who 
    * @param string $when 
    * @return string 
    */ 
    function sayHello($who, $when) 
    { 
     return "Hello $who, Good $when"; 
    } 
} 

class ApiController extends Zend_Controller_Action 
{ 
    /** 
    * @var Zend_Rest_Server 
    */ 
    protected $_server; 

    public function init() 
    { 
     // disable view rendering 
     $this->_helper->viewRenderer->setNeverRender(true); 
     // disable layout (if you use layouts) 
     $this->_helper->layout->disableLayout(); 

     $this->_server = new Zend_Rest_Server(); 
     $this->_server->setClass('Hello'); 
    } 

    public function __call($method, $args) 
    { 
     $params = $this->_getAllParams(); 
     $params['method'] = $method; 
     $this->_server->handle($params); 
    } 
} 

/* 
* This should allow you to call http://www.example.com/api/sayHello/who/MyName/when/morning 
* By defining custom routes you're able to control the urls. 
*/ 

S'il vous plaît être conscient que le code n'a pas été testé et a certainement besoin de quelques ajustements en particulier en ce qui concerne la gestion des erreurs, mais il peut servir d'exemple de service simple MVC.

+0

Je ne pouvais pas trouver un bon exemple sur la façon d'utiliser cela dans MVC. Pouvez-vous me montrer comment faire cela dans un contrôleur? – wenbert

+0

Merci pour l'exemple. Je voulais quelque chose comme ça parce que je veux utiliser "parties" de Zend Framework pour interroger ma base de données, etc Je voudrais upvote si j'avais assez de réputation :) Vraiment apprécier la réponse: D – wenbert

+0

JUst pour rendre clair: vous n'avez pas devez utiliser le MVC juste pour utiliser les autres composants de Zend Framework. De cette façon, le Framework Zend n'est pas aussi strict que les autres frameworks PHP - c'est simplement une collection de composants à utiliser à volonté (avec pas trop de dépendances inter-composants). –