fastify使用小记

用fastify有一段时间了,做个总结吧。

速度

fastify 号称是最快的nodejs框架,用下来确实很快。

一些常用的plugin

  • fastify-formbody

用来解析request form,必备利器

  • fastify-sequelize

数据库ORM sequelize的插件。

目前,我发现typeorm更好用,而typeorm不需要封装,这个插件就不太需要了。

几个遇到的坑

  1. 异步beforeHandler拦截器

当你的beforeHandler拦截器被声明为异步时,你需要特别注意,这时,由于beforeHandler是异步的,那么beforeHandler和最终的处理函数会被同时调用,因此,beforeHandler拦截器不应被声明为异步函数。

  1. request content-type

默认情况下,fastify只支持content-type为text/plain和application/json的request,如果是其他类型的content-type,fastify会直接返回415错误。

问题就来了,如果你和第三方对接,例如微信公众号开发,微信的请求头部是使用xml格式的,fastify直接就拦截了请求,并返回415,当时我查了半天,都没找到原因,因为你的route handler根本没被调用,最后才发现是这个content-type的原因。

我认为这个地方fastify设计的有点缺陷。