写一个图书管理系统后端服务器(使用koa+json+jwt+token)
时间: 2023-08-03 15:04:53 浏览: 155
基于Php的图书后台管理系统,功能比较简单,是我们平时做作业写的,含数据库,需要的可以私信我要源码
好的,下面是一个使用 Koa + JSON + JWT + Token 的图书管理系统后端服务器的示例代码。
首先,安装必要的依赖:
```bash
npm install koa koa-router koa-bodyparser jsonwebtoken uuid
```
其中,koa 是 Koa 框架本身,koa-router 是路由模块,koa-bodyparser 是解析请求体的模块,jsonwebtoken 是生成和验证 JWT 的模块,uuid 是生成唯一标识符的模块。
然后,创建一个 index.js 文件,输入以下代码:
```javascript
const Koa = require('koa');
const Router = require('koa-router');
const bodyParser = require('koa-bodyparser');
const jwt = require('jsonwebtoken');
const uuid = require('uuid');
const app = new Koa();
const router = new Router();
const books = [
{ id: '1', name: 'JavaScript 高级程序设计', author: 'Nicholas C. Zakas' },
{ id: '2', name: 'JavaScript DOM 编程艺术', author: 'Jeremy Keith' },
{ id: '3', name: 'JavaScript 语言精粹', author: 'Douglas Crockford' },
];
const secret = 'my-secret';
router.post('/login', async (ctx) => {
const { username, password } = ctx.request.body;
if (username === 'admin' && password === 'admin123') {
const token = jwt.sign({ username }, secret, { expiresIn: '1h' });
ctx.body = { token };
} else {
ctx.status = 401;
ctx.body = { message: 'Invalid credentials' };
}
});
router.get('/books', async (ctx) => {
const token = ctx.request.headers.authorization;
if (!token) {
ctx.status = 401;
ctx.body = { message: 'Missing authentication token' };
return;
}
try {
const decoded = jwt.verify(token, secret);
ctx.body = { books };
} catch (error) {
ctx.status = 401;
ctx.body = { message: 'Invalid authentication token' };
}
});
router.post('/books', async (ctx) => {
const token = ctx.request.headers.authorization;
if (!token) {
ctx.status = 401;
ctx.body = { message: 'Missing authentication token' };
return;
}
try {
const decoded = jwt.verify(token, secret);
const { name, author } = ctx.request.body;
const id = uuid.v4();
books.push({ id, name, author });
ctx.body = { id };
} catch (error) {
ctx.status = 401;
ctx.body = { message: 'Invalid authentication token' };
}
});
app.use(bodyParser());
app.use(router.routes());
app.use(router.allowedMethods());
app.listen(3000, () => console.log('Server is running on http://localhost:3000'));
```
该代码实现了以下功能:
1. 登录接口:POST /login,接受用户名和密码,验证成功后返回一个 JWT。
2. 获取图书列表接口:GET /books,需要在请求头中带上 JWT,验证成功后返回图书列表。
3. 添加图书接口:POST /books,需要在请求头中带上 JWT,验证成功后添加一本图书,并返回该图书的 ID。
这个示例代码是一个比较简单的图书管理系统后端服务器,可以根据实际需求进行修改和完善。
阅读全文