基于留言本的API
上一章我们基于cp
做了一个简单的留言本, 这一章我们来做基于留言本的接口
创建入口文件
在htdocs
目录下创建文件夹guestbook_api
, 并在文件夹下创建index.php
文件, 输入以下内容
<?php
require __DIR__ . '/../../crossboot.php';
Cross\Core\Delegate::loadApp('guestbook', array(
'sys' => array(
'display' => 'JSON'
)
))->run();
通过浏览器访问http://domain/htdocs/guestbook_api/
可以看到已经输出JSON
结果了, 是的, 就是这么简单 :).
有人要问: 我不想输出JSON
怎么办? 万一2036年大家都用 NOSJ
格式怎么办 ? 其实很简单, 只需要在视图控制器中增加一个NOSJ
方法, 在入口指定处理方法即可. 具体做法请阅读扩展处理类型文档
结合REST实现自定义路由
还有人说我想自定义url, 再说也不是全站数据都提供JSON接口, 这时候就可以用REST
模式来帮忙了, 在htdocs
目录下创建文件夹guestbook_rest
, 并在文件夹下创建index.php
文件, 输入以下内容
<?php
require __DIR__ . '/../../crossboot.php';
$app = Cross\Core\Delegate::loadApp('guestbook', array(
'sys' => array(
'display' => 'JSON'
)
));
$rest = $app->rest();
$rest->get('/guestlist/{:p}', function($p) use ($app) {
$app->get('main:index', array('p' => $p));
});
$rest->run();
然后就可以通过浏览器输入地址http://domain/htdocs/guestbook_rest/?/guestlist/1
来获取留言列表了. 更多用法请查看文档REST模式
与第三方程序结合
假设有一天我们要把http协议换成socket协议, 那也很简单, 只是重写入口代码就好了.
Cross\Core\Delegate::loadApp('guestbook')->get('控制器', '参数')
Delegate::get()
可以很方便和第三方程序整合.
总结
多app模式不怕项目规模大 :), 视图控制器处理能处理各种情况下的输出, 轻松切换跟业务逻辑分离, 大大降低开发时间. 如有任何问题或建议欢迎加入我们的QQ群~