前言
注意:只有后端,没有前端!主要是发一下代码供参考学习,并不是一个完整的教程。
我的博客总体来说速度还算是比较快的,但是使用vercel部署的说说严重影响了速度。
于是继twikoo之后我决定也把说说挪到服务器上面。
本人会一些node相关的知识,且写一个简单的增查也不是很难,所以就决定自己试试看,纯当练手了。
既然你能看到这篇文章那就说明我写出来了,总共花了几个小时的时间,百度、迁移数据、适配前端等占据大部分。
功能很少,只有添加和查询,后期可能会再添加,不过我个人感觉已经完全够用,毕竟说说主要就是展示数据而已。其他的可以直接修改data.json文件(我更喜欢这种)。
代码
部署可以参考这篇文章,基本都是一样的原理:微博热搜api使用与自建
package.json
1 2 3 4 5 6 7 8 9 10 11
| { "name": "talk", "main": "index.js", "scripts": { "build": "node index.js" }, "license": "ISC", "dependencies": { "express": "^4.18.1" } }
|
data.json(数据库)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| { "nickName": "Leonus", "avatar": "https://q1.qlogo.cn/g?b=qq&nk=553344777&s=3", "talkList": [{ "content": "说说内容", "date": "2022-06-28T13:13:30.65Z", "device": "大师探索版", "tag": "随便写写", "link": { "linkName": "", "linkUrl": "" } }], "total": 1 }
|
index.js
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67
| const express = require('express'); const fs = require('fs');
const app = express() app.use(express.json())
app.all('*', function(req, res, next) { res.header('Access-Control-Allow-Origin', '*'); res.header('Access-Control-Allow-Headers', 'Content-Type'); res.header('Access-Control-Allow-Methods', '*'); res.header('Content-Type', 'application/json;charset=utf-8'); next(); });
app.post('/addTalk', (req, res) => { if(req.body.token != "xxxxxxxx") res.status(500).send("token错误"); let d = addTalk(req.body) res.send({ message: "请求成功", data: d }) })
app.get('/getTalk', (req, res) => { let d = getTalk(req.query.length); res.send(d) })
function addTalk(tmp) { let data = JSON.parse(fs.readFileSync('./data.json', 'utf8')) let newTalk = { "date": new Date(), "content": tmp.content ? tmp.content : "", "device": tmp.device ? tmp.device : "", "link": { linkName: tmp.link.linkName ? tmp.link.linkName : "", linkUrl: tmp.link.linkUrl ? tmp.link.linkUrl : "" }, "tag": tmp.tag ? tmp.tag : "" } data.talkList.push(newTalk) data.total = data.talkList.length fs.writeFileSync('./data.json', JSON.stringify(data), 'utf8') return newTalk }
function getTalk(length) { let data = JSON.parse(fs.readFileSync('./data.json', 'utf8')) if (length <= data.total) { data.talkList = data.talkList.reverse().slice(0, length) } return data }
app.use((err, req, res, next) => { res.status(500).send(err.message); })
app.listen(3456)
|
后记
如果你有什么好的建议,欢迎留言。