初始化项目
首先声明哈本人使用的是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的应用就搭建好了,而且是允许跨域访问的嗷, 酱酱,就酱紫啦