如何为我的网络应用程序创建API?我正在研究Zend_Rest,但我无法理解它背后的想法。
基本上,我想要这样的例子:
$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();
但我完全迷失了如何使用Zend Framework实现它。我需要使用Zend_Rest_Server吗?任何形式的指导如何做到这一点将不胜感激......
答案 0 :(得分:2)
Zend Framework documentation on Zend_Rest_Server
有什么问题?关于如何使用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();
或者您有任何具体问题吗?
修改强> 关于你关于MVC集成的问题,我认为,这会引入极端开销以及web服务不需要的许多功能。尽管如此,我应该可以将服务集成到MVC中而不会出现任何重大问题(除了开销)。
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.
*/
请注意,代码未经测试,肯定需要进行一些调整,尤其是有关错误处理的问题,但它可以作为一个简单的MVC服务示例。