Node

从数据库到前端,使用 enum 代替 constant number

在我经历过的几个以node为主的后端项目中,都有一个文件 constant.js。顾名思义,里边保存着各种常量,而大多是字符串与数字的对应关系。

但是在实际工作中,根据数字来调试相当费劲,先不说后端代码中 where (status === 1) 这种可避免的神奇操作。(PS: 虽然我在吐槽它,但是有时我也会犯,给后来不熟悉业务者一脸懵逼…)。在数据库中查询也会遇到一些问题。

[登录那些事] 邮件发送,限流,漏桶与令牌桶

前段时间,我使用了 jwt 来实现邮箱验证码的校验与用户认证与登录,还特别写了一篇文章作为总结。

在那篇文章中,提到了一个点,如何限速。

在短信验证码和邮箱验证码,如果不限速,被恶意攻击造成大量的 QPS,不仅拖垮了服务,也会心疼如水的资费。鉴于君子固穷的原则,在我的邮箱服务里加上限速。

关于如何限速,有两个比较出名的算法,漏桶算法与令牌桶算法,这里对其简单介绍一下,最后再实践在我发邮件的API中

jwt 实践邮件验证与登录

去年我写了一篇介绍 jwt文章

文章指出如果没有特别的用户注销及单用户多设备登录的需求,可以使用 jwt,而 jwt 的最大的特征就是无状态,且不加密。

除了用户登录方面外,还可以使用 jwt 验证邮箱验证码,其实也可以验证手机验证码,但是鉴于我囊中羞涩,只能验证邮箱了。

另外,我已在我的试验田进行了实践,不过目前前端代码写的比较简陋,甚至没有失败的回馈提示。至于为什么前端写的简陋,完全是因为前端的代码量相比后端来讲实在过于庞大…

另外,如果你熟悉 graphql,也可以在本项目的 graphql-playground 中查看效果。

由 GraphQL 来思考 API Design

目前我已经写了一年多 graphql,也时常思考和 Rest API 的不同,以及对 API Design 的启发。

他山之石可以攻玉。qraphql 一些天然的设计或者思想对写 Rest API 有很大的借鉴或参考意义。

这里总结下一些受启发的 API 设计规范。

You-Dont-Know-JS 疑难汇总

最近我看了 You-Dont-Know-JS 的两个小册,在看书的过程中,为了方便以后索引与更深入的了解,也为了避免遗忘,我对每一册的较为复杂的点做了总结,编辑如下。