# 接口研发 * * * * * 在前面介绍章节的接口介绍中已经介绍了接口文档,错误码设计,Token。这里就不重复讲解了,直接来实战开发一个友情链接接口。 * * * * * ### 友情链接的接口逻辑层 此处演示友情链接接口就不新加文件了,若有需要童鞋们可以自己新建文件。 先来完成api模块逻辑类中的友情链接方法,此处放在Common文件: ~~~ /** * 友情链接 */ public function getBlogrollList() { return $this->modelBlogroll->getList([DATA_STATUS_NAME => DATA_NORMAL], true, 'sort desc,id asc', false); } ~~~ 简单粗暴的直接上代码才是最有效的,意思就是在逻辑层中通过友情链接模型查询数据状态正常的友情链接列表。 就这么简单,下面再看看接口控制器层。 * * * * * ### 友情链接的接口控制器层 ~~~ /** * 友情链接 */ public function getBlogrollList() { return $this->apiReturn($this->logicCommon->getBlogrollList($this->param)); } ~~~ 搞定。。。加到Common控制器就好了。 OneBase研发接口简直是 事半功倍。 下面将接口通过后台加进去,然后测试下接口是否正常。 先增加一个超级简单的友情链接列表接口。 ![](https://box.kancloud.cn/cbf57c3186a3ccda82a27f3c031aa18c_1893x939.png) 测试一下友情链接接口是否正常。 ![](https://box.kancloud.cn/aa070adc5bbe93a0e4746440f035e417_1767x905.png) 测完,一切正常,接口返回的数据这里就不一一解释了蛤,就是一些接口内置返回字段和自己逻辑层返回的数据。 * * * * * ### 聚合接口 ~~~ <?php // +---------------------------------------------------------------------+ // | OneBase | [ WE CAN DO IT JUST THINK ] | // +---------------------------------------------------------------------+ // | Licensed | http://www.apache.org/licenses/LICENSE-2.0 ) | // +---------------------------------------------------------------------+ // | Author | Bigotry <3162875@qq.com> | // +---------------------------------------------------------------------+ // | Repository | https://gitee.com/Bigotry/OneBase | // +---------------------------------------------------------------------+ namespace app\api\controller; /** * 聚合接口控制器 */ class Combination extends ApiBase { /** * 首页接口 */ public function index() { $article_category_list = $this->logicArticle->getArticleCategoryList(); $article_list = $this->logicArticle->getArticleList($this->param); return $this->apiReturn(compact('article_category_list', 'article_list')); } /** * 详情接口 */ public function details() { $article_category_list = $this->logicArticle->getArticleCategoryList(); $article_details = $this->logicArticle->getArticleInfo($this->param); return $this->apiReturn(compact('article_category_list', 'article_details')); } } ~~~ 上面代码就是聚合接口的类,可以看到首页接口中包含了文章分类数据和文章列表数据,文章详情接口中 包含了 文章分类数据 和 文章详情数据。 为什么需要聚合接口? 因为APP端发起HTTP请求是非常耗费资源的,通俗易懂就是速度很慢,如果一个首页数据展示 都需要 十几次请求接口拿数据的话。。可想而知流量大的压根就打不开了吧。 OneBase聚合接口是将逻辑层返回的数据进行组合,然后在一个接口中进行返回,并不要求只能一个接口返回,而是越少越好。