Eggjs下Restful API的实现

这两天真的是宅的骨头都发霉了,春困秋乏夏打盹,也是醉了。今天就简要说说eggjs下Restful API的实现。主要的缘由是egg的文档写的不太清楚,方便新人快速上手。话说eggjs真的是蛮好用的,经过在koa上架了一层,保证了团队以一套统一的约定开发;另外,egg自己提供不少明确的插件和中间件给你,你只管用就行了,很是的方便和容易上手。可是eggjs的文档有点小问题,它在有些须要强调的点上没有强调(它都写了只是没有强调而已)。致使咱们一目十行去扫文档的时候,有时总会以为有些莫名,Restful api的实现就是其中之一。

1. 什么是Restful API

说人话的方式来解释一下就是:html

Restful API: 为了让接口的设计的更简明易懂,人们定义的一套API命名规范

Restful API有几个特性:api

  • 面向资源:接口命名都是zoos、animals,而不是getAllAnimals这样的
  • 使用Http动词:GET/PUT/POST/DELETE/PATCH/HEAD/OPTIONS,而不是咱们平常只用的GET和POST

具体的内容能够参考相关文档,就再也不多说了,立刻进入正题restful

参考文档:《如何给老婆解释什么是RESTful》(我晚上立刻秀了波如何给爸妈解释区块链,效果棒棒的),《RESTful API 设计指南app

2. 如何在egg下实现Restful API

若是咱们直接找寻文档的话,能够在eggjs文档下发现RESTful API的文档,而后看完以后知道了egg已经帮咱们内部实现了一份Restful API的对应关系。koa

甚至路由应该这么写:函数

// app/router.js
module.exports = app => {
  app.router.resources('topics', '/api/v2/topics', app.controller.topics);
};

可是这个controller里该怎么写?这对应的是哪一个函数?反正我看完了是一脸懵逼。其实这和我自己对Restful API的了解不深刻有关,可是也没有文档和我说实现啊。post

其实egg在Router章节中说到了这一点,区块链

图片描述

能够看到,若是是GET, 路径只有/posts,那么对应着posts这个Controllers中的index方法,其余依次类推。
这样和《RESTful API 设计指南》中提到的规范写法是同样的:spa

图片描述

到这里我才明白Restful API到底是什么,应该怎么写。插件

另外须要注意的三个点

  1. egg会尝试对应你Controllers中定义的方法,若是没有定义相应的方法,会返回404错误
  2. 路径中的id可使用ctx.params.id来得到
  3. 实际的路径书写以下:
show方法:
GET /posts/1

edit方法:
GET /posts/1/edit

update方法:
PUT /posts/1

Egg的文档VUE的不一样,须要稍微用心一点,否则可能会像我同样看一下子。以上。

相关文章
相关标签/搜索