[Laravel] 趣编程之技术文章评论列表 Api 任务的开发心得

栏目: 编程语言 · PHP · 发布时间: 6年前

内容简介:[Laravel] 趣编程之技术文章评论列表 Api 任务的开发心得

完成跑通 Api 任务之后,领取到了我在趣编程的第一个撰写 Api 的任务,然而一脸茫然,什么是 Api?

API -> Application Programming Interface

应用程序编程接口。嗯,看起来还是很茫然!看看大老大的 CheckList 先把。。

[Laravel] 趣编程之技术文章评论列表 Api 任务的开发心得

关键点: 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 出来你满意了吧~

[Laravel] 趣编程之技术文章评论列表 Api 任务的开发心得

这样你总满意了吧?

不行,我不满意。这么多 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 图,你要啥,我都给!

这下子,才能提交初审哟

这个项目架构好像很厉害

[Laravel] 趣编程之技术文章评论列表 Api 任务的开发心得

大概是这样的一个流程吧。

当然这个 Api 还有不足的地方,比如没有实现分页。关于分页,咱们有得聊。下回见喽~


以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

Ruby元编程

Ruby元编程

[意] Paolo Perrotta / 廖志刚、陈睿杰 / 华中科技大学出版社 / 2012-1-10 / 56.00元

《Ruby元编程》以案例形式循序渐进讲解Ruby对象模型原理和高级应用技巧,堪称动态语言的设计模式。书中讲述的各种Ruby编程模式,完全可以应用于其他动态语言(甚至静态语言)。本书不仅适合Ruby程序员阅读,也适合对动态编程 语言和面向对象编程感兴趣的读者阅读。所有对程序设计理论感兴趣的人都能从中获益。Ruby之父松本行弘作序推荐。一起来看看 《Ruby元编程》 这本书的介绍吧!

JSON 在线解析
JSON 在线解析

在线 JSON 格式化工具

在线进制转换器
在线进制转换器

各进制数互转换器

XML 在线格式化
XML 在线格式化

在线 XML 格式化压缩工具