基于留言本的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群~