引言

欢迎来到趣编程大家庭,我写这篇文章的目的有二:

  1. 梳理自己的思路,提高对项目架构的理解

  2. 给新来的小伙伴一个参考,让你们更快的融入到项目环境中去。

做任务之前,首先你要确保本地环境都已经搭建成功,并且基于 development 分支新建了一个功能分支。如果 git 不会用,参考这篇文章

接手任务

[Api] 技术文章评论列表

先简单分析一下:

  1. 索要 Google Table 的查看权限。

  2. table 的位置在 Excel 里 [技术文章] 这个sheet里。

  3. Code Reviewer 为刘东华。

提炼了这三个关键点,接下来你需要做的:

  1. 分析与你任务相关的数据表。

  2. 分析 UI 图,在数据表里找到所需要的字段。

任务分析

根据提供的 UI 图,我们需要获取的数据有:

  1. 评论内容

  2. 时间

  3. 评论的用户头像,名字

  4. 评论的 id

主要有这几个字段是我们需要的

  1. id

  2. content

  3. created-user_id

  4. replied-comment-id

这些字段的获取都十分方便,问题在于,如何将 created-user-id 以及 replied-comment-id 转换为具体的数据。此时需要使用 Laravel 里强大的 Eloquent ORM 中的关联模型。此时你需要好好研读官方文档

下面就根据写代码的思路上代码咯~

实战代码

写代码之前,还有最后一件事情要做。就是弄清楚各个文件之间的联系。

  1. routes.php 你要在这里定义你的路由,记住遵守 RESTFul 规范。

  2. Controller 你要在这个文件夹下创建你的控制器。

  3. Interface 你要在这个文件夹下创建你的接口。

  4. Repositories 你要在这个文件夹下创建你的仓库,用来实现你在接口中定义的函数。

  5. Transformer 你要在这个文件夹下创建你的转换器,用来处理仓库返回的数据。

  6. Entities 你要在这个文件夹下创建你的模型,也就是 Model,也是处理数据表关联模型的地方。

下面就正式开始写啦

routes

在 route 里创建一条路由,指向某一个控制器中的某一个方法。

ArticleCommentController

  1. 在控制器中创建构造函数,即 __construct()。初始化 interface 。

  2. 在控制器的相应方法里,调用 interface 定义的接口,拿到 Repositities 中返回的集合。

  3. 根据 Dingo Api(文档在这里) ,将 Respositities 返回的数据传给 Transformer,转换成客户端能够使用的 Json 数据。

ArticleInterface

接口,定义函数,是面向对象编程的概念。

ArticleReository

实现接口里定义的函数,也就是本任务的逻辑代码,对数据库进行 CURD 操作。

AppServiceProvider

绑定你的接口和仓库。

ArticleCommentTransformer

对仓库里返回的数据进行转换,也是 Eloquent ORM 关联关系起作用的地方。

Entities

这个文件下的代码,便是处理 ORM 关联模型的关键之处。代码我就不给了,非常简单,寥寥数行。希望读者能自行查阅文档。

任务的结果

重点归纳

本次任务中有几个需要注意的点,也是我踩过的一些坑,在这儿归纳给大家,希望大家能够少走弯路:

  1. 路由的设计规范问题。请严格遵守 RESTful 设计规范。学习传送门

  2. 代码的书写格式,遵循驼峰命名,缩进为两个空格,箭头对齐。都是一些细节问题,建议呢,就是 commit push 了之后,到gitlab 上查看 diff,能够很容易的看到一些格式问题。

  3. 数据表之间的关联关系,记得多看看 Eloquent ORM 文档。精华都在文档里呢。

  4. 一定要熟悉面向对象编程,MVC 架构的一些基本概念。理解了这些理论,才能更加容易地去理解代码中的一些关系。当然,你也可以选择先依葫芦画瓢,有个实践经验,再去学理论知识,相信肯定会掌握的更加透彻。

这条 Api 写的其实还不完善。因为缺少了分页的功能。关于分页,咱们有的聊,下次再会啦~

发表评论

电子邮件地址不会被公开。 必填项已用*标注