资讯专栏INFORMATION COLUMN

Fastfiy基础指南

svtter / 2374人阅读

摘要:什么是是一个高度专注于以最少开销和强大的插件架构,为开发人员提供最佳体验的框架。它受到了和的启发,是目前最快的框架之一。

什么是 Fastify?

Fastify 是一个高度专注于以最少开销和强大的插件架构,为开发人员提供最佳体验的 Web 框架。

它受到了 HapiExpress 的启发,是目前最快的 Node 框架之一。

Fastify 独特的将 JSON Schema 应用到请求时的 validation 和响应时的 serialization, 作者写的 fast-json-stringify 包更是达到了2x faster than JSON.stringify的神奇效果。

为什么要使用 Fastify

100% 异步:框架的核心都是用异步代码实现的

高性能:每秒可以提供34000个请求

可扩展:Fastify 通过其钩子插件装饰器完全可扩展

基于模式:即使不是强制性的,我们建议使用 JSON Schema 来验证路由并序列化输出

日志记录:日志非常重要,但成本高昂,我们选择了最好的记录器 Pino

对开发者友好:该框架构建非常有表现力,不会牺牲性能和安全性

如何安装fastify? 使用 npm 安装:
npm i fastify --save
使用 yarn 安装:
yarn add fastify
脚手架安装 全局安装
npm i fastify-cli -g
进入目录
cd [myproject]
初始化Fastify脚手架
fastify generate
运行
npm start
如何创建一个简单的 Fastify 应用?

声明一个监听客户端http://127.0.0.1:3000/的「GET」请求

Fastify返回 { hello: "world" }

// 加载框架并新建实例
const fastify = require("fastify")({
  // 开始日志记录
  logger: true
})

// 声明路由
fastify.get("/", function(request, reply) {
  reply.send({ hello: "world" })
})

// 启动服务!
fastify.listen(3000, function(err, address) {
  if (err) {
    fastify.log.error(err)
    process.exit(1)
  }
  fastify.log.info(`server listening on ${address}`)
})

-n-

我们还可以利用async/await特性,讲Fastify进行异步操作
const fastify = require("fastify")()

fastify.get("/", async (request, reply) => {
  return { hello: "world" }
})

const start = async () => {
  try {
    await fastify.listen(3000)
  } catch (err) {
    fastify.log.error(err)
    process.exit(1)
  }
}
start()
就如同在 JavaScript 中一切皆为对象,在 Fastify 中,一切都是插件 (plugin)。

新建一个基础的插件

// my-first-pugin.js
async function routes (fastify, options) {
  fastify.get("/", async (request, reply) => {
    return { hello: "world" }
  })
}

module.exports = routes

在服务器上注册这个插件

const fastify = require("fastify")()

// 注册插件
fastify.register(require("./our-first-route"))
// 监听3000端口号,启动
fastify.listen(3000, function (err, address) {
  if (err) {
    fastify.log.error(err)
    process.exit(1)
  }
  fastify.log.info(`server listening on ${address}`)
})
为了优化解析 JSON 与序列化 JSON 输出的过程,Fastify 可以序列化数据

我们可以在schema的选项中设置 response 的值,能够加快 JSON 的序列化

约束200状态码的response的数据格式
const opts = {
  schema: {
    response: {
      200: {
        type: "object",
        properties: {
          hello: { type: "string" }
        }
      }
    }
  }
}
fastify.get("/", opts, async (request, reply) => {
  return { hello: "world" }
})

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

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

相关文章

  • 《5G网络云基础设施安全指南》第I部分发布

    摘要:美国国家安全局和网络安全与基础设施安全局近期发布了网络云基础设施安全指南第部分防止和检测横向移动以下简称指南。如开篇所述,企业组织应积极使用微分段,以最小化环境中任何特定网络分段危害的爆炸半径。尽管云计算将在5G网络的成功落地中发挥着关键作用,但任何新技术的应用都会带来安全问题,云计算也不例外。美国国家安全局(NSA)和网络安全与基础设施安全局(CISA)近期发布了《5G网络云基础设施安全指...

    XBaron 评论0 收藏0
  • 《推动企业上云实施指南(2018-2020年)》解读

    摘要:日前,工业和信息化部印发了推动企业上云实施指南年以下简称实施指南,指导和促进企业运用云计算加快数字化网络化智能化转型升级。稳妥有序实施上云。为更好推进企业上云工作,实施指南提出了相关政策措施。8月10日,信息化和软件服务业司发布了《推动企业上云实施指南(2018-2020年)》(以下简称实施指南)解读。《实施指南》显示,云计算是推动信息技术能力实现按需供给、提高信息化建设利用水平的新技术、新...

    DevTalking 评论0 收藏0
  • 概览 AI在线服务 UAI Inference

    摘要:概览概览产品简介基础知识产品优势机制产品架构设计原理弹性扩缩容机制开发综述服务请求方式开源镜像开源案例学习视频产品定价快速上手快速上手案例介绍环境准备在线服务代码简介 概览产品简介UAI-Inference基础知识产品优势Hot-Standby机制产品架构设计原理弹性扩缩容机制开发综述服务请求方式开源Docker镜像开源案例学习视频产品定价快速上手快速上手(TF-Mnist案例)MNIST ...

    ernest.wang 评论0 收藏1403
  • [译]148个资源让你成为CSS专家

    摘要:层叠样式表二修订版这是对作出的官方说明。速查表两份表来自一份关于基础特性,一份关于布局。核心第一篇一份来自的基础参考指南简写速查表简写形式参考书使用层叠样式表基础指南,包含使用的好处介绍个方法快速写成高质量的写出高效的一些提示。 迄今为止,我已经收集了100多个精通CSS的资源,它们能让你更好地掌握CSS技巧,使你的布局设计脱颖而出。 CSS3 资源 20个学习CSS3的有用资源 C...

    impig33 评论0 收藏0
  • 全解小程序猜数字游戏 04《 程序员变现指南之 微信&QQ 小程序 真的零基础开发宝

    摘要:此时使用设置当前值中的猜测值为输入框的内容值。接着判断猜测之是否大于或者小于,因为这两者是范围之外不再进行判断,所以最开始使用进行判断不能小于不能大于以上代码中表示调用微信小程序接口弹出提示,传入的参数为提示内容。 ...

    不知名网友 评论0 收藏0

发表评论

0条评论

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