加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
app.js 2.36 KB
一键复制 编辑 原始数据 按行查看 历史
MiaoLiMing 提交于 2023-05-26 16:56 . first commit
//app.js
const Koa = require("koa");
var bodyParser = require("koa-bodyparser");
const Cors = require("koa2-cors");
const app = new Koa();
const routers = require("./routes/index"); //导入routes导出的文件
const koaSwagger = require("koa2-swagger-ui");
const swagger = require("./routes/swagger");
app.use(swagger.routes(), swagger.allowedMethods());
//swagger配置
app.use(
//注意这里需要看koa2-swagger-ui的版本 不然会报koaSwagger不是一个函数等错误
koaSwagger({
routePrefix: "/swagger", // host at /swagger instead of default /docs
swaggerOptions: {
url: "/swagger.json", // example path to json
},
})
);
const redisClient = require("./redis/redis");
const whiteList = require("./utils/whiteList");
//接口是否需要登录
app.use(async (ctx, next) => {
let url = ctx.request.url;
let flag = false;
whiteList.map((res) => {
if (url.indexOf(res) !== -1) {
flag = true;
}
});
if (flag) {
await next();
} else {
if (ctx.header && ctx.header.token) {
const token = ctx.header.token;
if (token) {
try {
let exits = await redisClient.exists(token);
if (exits) {
//redis存在此token
await next();
} else {
return (ctx.body = {
code: 20001,
status: 200,
message: "token失效,请重新登录",
});
}
} catch (error) {
console.log("我是错误信息");
console.log(error);
console.log("我是错误信息");
}
} else {
//没有传token
return (ctx.body = {
code: 20001,
status: 200,
message: "用户未登录",
});
}
} else {
return (ctx.body = {
code: 20001,
status: 200,
message: "用户未登录",
});
}
}
});
app.use(Cors());
app.use(bodyParser());
app.use(routers.routes()).use(routers.allowedMethods());
// request.method可以获取请求方法。
// get,post或者其他类型(request对象被封在ctx内,所以也可以ctx.method获取)
app.use(async (ctx) => {
if (ctx.url === "/" && ctx.method === "POST") {
ctx.body = ctx.request.body;
} else {
// 其他请求显示404
ctx.body = "<h1>404!</h1>";
}
});
app.listen(3000);
console.log("服务器开启: http://localhost:3000/");
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化