内容简介:[Laravel] 趣编程之技术文章评论列表 Api 任务的开发心得
完成跑通 Api 任务之后,领取到了我在趣编程的第一个撰写 Api 的任务,然而一脸茫然,什么是 Api?
API -> Application Programming Interface
应用程序编程接口。嗯,看起来还是很茫然!看看大老大的 CheckList 先把。。
关键点: Table
OK,前期执行了数据库的迁移和填充命令,拿到权限看了 table 之后,大概明白什么意思了。
Api 接口就是要给前端传数据呀!数据哪里来?数据库呗。那不就是一句 all() 就搞定的问题么?
没那么简单,先依葫芦画瓢
研究了一下目录结构,握草这是啥,握草这又是啥?看看别人的代码,控制器怎么就两行? Repositities 什么鬼? Transformer 什么鬼? Entities 又是什么鬼??
万变不离其宗,先从路由着手吧。
$api->get('articles/{article_id}/getComments', 'ArticleController@getComments');
通过 url 访问控制器里的 getComments 方法。
ok,创建了 getComments 方法,然后呢?一脸茫然。。
看看别人的代码,先依葫芦画瓢吧。
Controller
public function __construct(ArticleCommentInterface $articleCommentInterface) { $this->ArticleCommentInterface = $articleCommentInterface; } public function getComment($article_id) { $comments = $this->ArticleCommentInterface->getArticleCommentById($article_id); return $this->response->collection($comments, new ArticleCommentTransformer()); }
Interface
public function getComments();
Respositities
public function getComments() { return ArticleComment::all() }
Transformer
public function transform(Article $article) { return [ 'id' => $article->id, ... ]; }
Entities
public function comments() { return $this->hasMany(ArticleComment::class, 'article_id', 'id'); } ...
建立了无数个文件之后,心中万头草泥马飞奔而过,我就拿个数据,怎么要建立这么多文件。。。这 hasmany 是什么鬼,transform 为啥要 return 这一堆东西,Respositities 倒是懂了,数据库操作的地儿。Interface 则是接口,和 Respositities 绑定。在 Respositities 中实现 interface 的方法。熟悉面向对象的小伙伴懂得。
哦对了,测试数据需要提供 token。教程在这里
测试,完美!提交初审咯~
不合格!
你这些 article id,user id 给前端展示数字吗!把具体 title,username 返回!一堆数字是要造反吗!
打回重写
行,要具体数据是吧,那我就一个个 find 出来,一个个 select 出来,一个个 foreach 出来你满意了吧~
这样你总满意了吧?
不行,我不满意。这么多 find 是要造反吗?别人的代码怎么这么简洁? entities 的代码怎么没用?直接返回 json 还要 transformer 干什么?一条请求连接这么多次数据库,服务器不想要了?
没日没夜(在地铁拿着手机当小说看了一会儿)地钻研了 laravel 文档 ORM 模块,hasmany,belongsto 好像很厉害的样子哦哟
respositities 返回一个 collection 传给 transformer 那么 transformer 拿到了好多id数据
见证奇迹的时刻!
public function transform(ArticleComment $comments) { $articleInfo = $comments->article; $user = UserInfo::select('real_name')->find($articleInfo->created_user_id); return [ 'article_title' => $articleInfo->title, 'article_user' => $user->real_name, 'is_evaluator' => $comments->is_evaluation, 'comment_content' => $comments->content, 'comment_created_user' => $comments->user, 'replied_comment' => $comments->reply, 'replied_user' => $comments->repliedUser, 'created_at' => $comments->created_at ]; }
这里的 user,reply,replyuser 实际上,都是 entities 里的方法。通过 hasmany 实现了多表查询的功能,只要再接上select,想要什么字段就返回什么字段啦。然后根据 UI 图,你要啥,我都给!
这下子,才能提交初审哟
这个项目架构好像很厉害
大概是这样的一个流程吧。
当然这个 Api 还有不足的地方,比如没有实现分页。关于分页,咱们有得聊。下回见喽~
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网
猜你喜欢:本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
群智能优化算法及其应用
雷秀娟 / 2012-8 / 85.00元
《群智能优化算法及其应用》编著者雷秀娟。 《群智能优化算法及其应用》内容提要:本书以群智能优化算法中的粒子群优化(]Particle Swarm Optimization,PSO)算法为主线,着重阐述了PSO算法的基本原理、改进策略,从解空间设计、粒子编码以及求解流程等方面进行了详细设计与阐述,对蚁群优化(Ant Colony Optimization,AC0)算法、人工鱼群(Art......一起来看看 《群智能优化算法及其应用》 这本书的介绍吧!