【搭建博客服务端部分】第二部分 搭建基本的框架

本文介绍了如何使用Express.js框架搭建一个简单的博客服务端应用,包括配置跨域、JSON解析、文件上传等功能,并通过HeidiSQL创建了SQLite数据库,实现了基本的数据查询。

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

【搭建博客服务端部分】第二部分 搭建基本的框架



2. 搭建基本的框架

server/app.js

// 养成规范引入的写上面
const express = require('express')
const multer = require('multer')
const port = 8888
const app = express()

// 跨域请求配置
app.use(function (req, res, next) {
    // 设置允许跨域的域名,*表示的是允许任何域名进行跨域
    res.header('Access-Control-Allow-Origin', '*')
    // 设置header类型,表示的是允许任何类型的header
    res.header('Access-Control-Allow-Headers', '*')
    // 跨域允许的请求方式
    res.header('Access-Control-Allow-Methods', 'DELETE,PUT,POST,GET,OPTIONS')
    if(req.method == 'OPTIONS'){
        // 让options尝试请求快速结束
        res.sendStatus(200)
    }else{
        next()
    }
})

// 支持json
app.use(express.json())

// 支持使用上传中间件
const update = multer({
    // 存放的位置
    dest:'./public/upload/data'
})
// 允许上传任何东西
app.use(update.any())

// 指定静态资源的路径
app.use(express.static(path.join(__dirname,'public')))

// 以get请求则返回值
app.get('/', (req, res) => {
    res.send('Hello,express!')
})

app.listen(port, () => {
    console.log(`http://localhost:${port}`);
})

server/db

使用heidisql软件进行创建数据库,官网搜索即可下载

打开软件后右键新建会话

在这里插入图片描述

在这里插入图片描述

创建三张表

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

server/db/dbUtil.js

const sqlite3 = require('sqlite3').verbose()
const Genid = require('../utils/SnowFlake')
const path = require('path')
// 连接数据库
const db = new sqlite3.Database(path.join(__dirname,'blog.sqlite3'))
const genid = new Genid({WorkerId:1})

// 对查询,修改数据库的方法进行封装,便于使用,不会产生地狱回调
// 创建一个属性
db.async = {}
// 对db.all方法进行封装,查询
db.async.all = (select,params) =>{
    return new Promise((resolve,reject)=>{
        db.all(select,params,(error,rows) =>{
            resolve({error,rows})
        })
    })
}
// 对db.run方法进行封装,对数据库进行增删改查
db.async.run = (select,params) =>{
    return new Promise((resolve,reject)=>{
        db.run(select,params,(error,rows) =>{
            resolve({error,rows})
        })
    })
}


//暴露出去
module.exports = {db,genid}

server/router/testRouter.js

const express = require('express')
const { db, genid } = require('../db/dbUtil')

// 创建路由
const router = express.Router()

// 编写路由
router.get('/test', async (req, res) => {
    let data = await db.async.all('select * from admin', [])
    res.send({
        id: genid.NextId(),
        data
    })
})

module.exports = router

到app.js中去注册路由

// 养成规范引入的写上面
const express = require('express')
const multer = require('multer')
const port = 8888
const app = express()

// 跨域请求配置
app.use(function (req, res, next) {
    // 设置允许跨域的域名,*表示的是允许任何域名进行跨域
    res.header('Access-Control-Allow-Origin', '*')
    // 设置header类型,表示的是允许任何类型的header
    res.header('Access-Control-Allow-Headers', '*')
    // 跨域允许的请求方式
    res.header('Access-Control-Allow-Methods', 'DELETE,PUT,POST,GET,OPTIONS')
    if(req.method == 'OPTIONS'){
        // 让options尝试请求快速结束
        res.sendStatus(200)
    }else{
        next()
    }
})

// 支持json
app.use(express.json())

// 支持使用上传中间件
const update = multer({
    // 存放的位置
    dest:'./public/upload/data'
})
// 允许上传任何东西
app.use(update.any())

// 指定静态资源的路径
app.use(express.static(path.join(__dirname,'public')))

//注册路由
app.use('/test',require('../server/router/testRouter.js'))

// 以get请求则返回值
app.get('/', (req, res) => {
    res.send('Hello,express!')
})

app.listen(port, () => {
    console.log(`http://localhost:${port}`);
})

启动文件即可访问http://localhost:8888/test/test


总结

以上就是今天要讲的内容,希望对大家有所帮助!!!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值