资讯专栏INFORMATION COLUMN

Eggjs下Restful API的实现

linkin / 3407人阅读

摘要:今天就简要说说下的实现。主要的原因是的文档写的不太清楚,方便新人快速上手。导致我们一目十行去扫文档的时候,有时总会觉得有些莫名,的实现就是其中之一。其实这和我本身对的了解不深入有关,但是也没有文档和我说实现啊。

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

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

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

Restful API有几个特性:

面向资源:接口命名都是zoos、animals,而不是getAllAnimals这样的

使用Http动词:GET/PUT/POST/DELETE/PATCH/HEAD/OPTIONS,而不是我们日常只用的GET和POST

具体的内容可以参考相关文档,就不再多说了,马上进入正题

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

2. 如何在egg下实现Restful API

如果我们直接找寻文档的话,可以在eggjs文档下发现RESTful API的文档,然后看完之后知道了egg已经帮我们内部实现了一份Restful API的对应关系。

甚至路由应该这么写:

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

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

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

可以看到,如果是GET, 路径只有/posts,那么对应着posts这个Controllers中的index方法,其他依次类推。
这样和《RESTful API 设计指南》中提到的规范写法是一样的:

到这里我才明白Restful API究竟是什么,应该怎么写。

另外需要注意的三个点

egg会尝试对应你Controllers中定义的方法,如果没有定义相应的方法,会返回404错误

路径中的id可以使用ctx.params.id来获得

实际的路径书写如下:

show方法:
GET /posts/1

edit方法:
GET /posts/1/edit

update方法:
PUT /posts/1

Egg的文档VUE的不同,需要稍微用心一点,不然可能会像我一样看一会儿。以上。

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/107664.html

相关文章

  • Eggjs小试

    摘要:项目都很小,但为了进一步了解,特意选择了作为框架基础开发后端服务。能将请求限制在同源网站,即只有拥有专有令牌的网站发送请求才会正确响应。项目生产静默部署,启动使用,停止使用。不足工具函数的访问需要自己手动添加扩展另没有写测试,希望下次补上。 前言 这段时间,用Eggjs作为后端服务框架开发了几个项目。项目都很小,但为了进一步了解Eggjs,特意选择了Eggjs作为框架基础开发后端服务。...

    waltr 评论0 收藏0
  • eggjs】部署egg时碰到日志权限问题

    摘要:前两天将一个部署到服务器时,用就是启动不了,错误信息为无权限创建目录。查看工作目录权限,当前用户是有权限的,看了源码,原来是用的包的问题。首先,在生产环境下的启动是通过启动的。 前两天将一个egg部署到服务器时,用npm start就是启动不了,错误信息为无权限创建log目录。查看工作目录权限,当前用户是有权限的,看了源码,原来是用的npm包的问题。这里简单记录下解决过程。 首先,在生...

    waterc 评论0 收藏0
  • 造轮子 - EGGJSMySQL操作库

    摘要:最近学习,学习过程中使用官方推荐的库,感觉官方库不太好用,基础的没问题。介绍这个轮子其实是很早以前就造好的,主要参考的数据库操作方式。将设置表名设置查询字段联表等操作进行链式操作,给人一种语义化操作数据库的感觉。 最近学习eggjs,学习过程中使用官方推荐的MySQL库,感觉官方库不太好用,基础的CURD没问题。但是复杂点的操作就不行了,虽然官方还有一个egg-sequelize,但是...

    Alex 评论0 收藏0
  • egg 自学入门demo分享

    摘要:编写在文件夹下添加,文件这里用于获取数据库中的数据添加路由确保数据库能连接成功后,便可以启动项目。本文只是辅助介绍快速搭建一个基本的项目,具体内容请参考若有疑问或错误,请留言,谢谢 2018-08,本文适用于对egg有兴趣想要了解的同学完整项目代码:https://github.com/NameHewei/node-egg 项目主要文件目录结构 |—— app |—— con...

    Olivia 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<