使用fastify搭建项目

该文章介绍了如何在Mac系统上初始化一个Node.js项目,使用Fastify框架搭建Web服务,包括创建目录结构、安装Fastify和nodemon、配置CORS、编写app.js和index.js文件,以及设置路由和控制器。此外,还展示了如何创建返回固定参数的接口。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

初始化项目

首先声明哈本人使用的是mac系统,所以会有些许差异,各位自行查找一下相关的命令或者是平替操作

 # 新建目录
mkdir blogdemo
cd blogdemo 

# 初始化项目
npm init 

在这里插入图片描述
这里我就不过多阐述了嗷

新建目录和index文件,app文件
mkdir routes controller middleware models services utils
touch index.js
touch app.js
# 安装fastify
npm i fastify -S
# 安装nodemon调试用
npm i nodemon -D
修改package.json文件
{
  "name": "blogdemo",
  "version": "1.0.0",
  "private": true,
  "scripts": {
    "start": "node index.js",
    "dev": "nodemon index.js"
  },
  // ....其他的例如devDependencies,dependencies等我就不详细写了
  "engines": {
    "node": ">=12.0.0" // 设置nodejs最低版本
  }
}

目录结构如下

controllers

contro1
contro2

书写控制器文件

middleware

auth.js
…等中间键文件

models

一些公共的参数模板文件

routes

路由文件

services

服务文件

utils

公共的一些方法函数

app.js fastify实例对象
index.js 启动文件及服务文件
config.json 配置文件
package.json 依赖和配置文件

首先我们先书写一下app.js和index.js
app.js
app.js很简单就定义一个fastify实例就行了,当然你也可以挂挂载一些前置的插件

const fastify = require("fastify")();
// 可以在这里挂载一些前置插件,例如sql连接,例如cors跨域等等的
module.exports = fastify;

我习惯在index.js中进行挂载
index.js

// 引入fastify
const fastify = require("./app");
// 配置cors跨域
const cors = require('@fastify/cors')
fastify.register(cors, {
  origin: '*',// 这里可以是数组形式,指定多个地址请求
  methods: ['GET', 'PUT', 'POST', 'DELETE', 'OPTIONS']
})
// 启动服务器
const start =  () => {
  fastify.listen({ port: 3002, host: '0.0.0.0' }, (err, address) => {
    if (err) {
      fastify.log.error(err)
      process.exit(1)
    }
    console.info(`server listening on ${address}`)
  });
};

start();
定义接口绑定controllers

我一般会把接口绑定的函数放置在controllers里面
例如新建一个返回固定参数的接口
文件名字我们就定义为 info.js吧

const info = async (request, reply) => {
  reply.send({
  	code: 200,
  	data: {},
  	message: "This is a info Api."
  })
}
module.exports = {
  info
}
创建接口的路由

/routes/index.js

const { info } = require("../controllers/info")
module.exports = [
  {
    url: "/info",
    method: "GET",
    // 当然你也可以添加一些其他的前置函数来做一些处理例如添加token校验等等的
    // preHandler: 前置函数(),
    handler: info
  }
]

在上面这里我们添加好了路由配置后引入到index.js或者是app.js中进行挂载

// 引入fastify
const fastify = require("./app");
// 配置cors跨域
const cors = require('@fastify/cors')
const routes = require('./routes')
fastify.register(cors, {
  origin: '*',// 这里可以是数组形式,指定多个地址请求
  methods: ['GET', 'PUT', 'POST', 'DELETE', 'OPTIONS']
})
// 注册路由
routes.forEach(route => {
  fastify.route({
    ...route
  })
})
// 启动服务器
const start =  () => {
  fastify.listen({ port: 3002, host: '0.0.0.0' }, (err, address) => {
    if (err) {
      fastify.log.error(err)
      process.exit(1)
    }
    console.info(`server listening on ${address}`)
  });
};

start();

这时我们一个简单的fastify的应用就搭建好了,而且是允许跨域访问的嗷,
酱酱,就酱紫啦

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ZemanZhang

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值