前言:实现一个koa服务启动,后续进行对项目的mock数据链接,进行本地的代码调试,达到快速实现页面效果,前后端协同
1.下载koa包
npm install -D koa
主要实现的使用的核心方法:使用的node的os模块,找到具体的网络地址,进行项目的本地服务转发
var os = require("os");
// 返回一个对象,该对象包含已分配了网络地址的网络接口
var ifaces = os.networkInterfaces();
/*
* @title: 使用Koa搭建Node服务
* @description: 描述
*/
const Koa = require("koa");
const router = require("koa-router")();
// 引入koa-bodyparser中间件,这个中间件可以将post请求的参数转为json格式返回
const bodyParser = require('koa-bodyparser');
// 使用中间件后,可以用ctx.request.body进行获取POST请求参数,中间件自动给我们解析为json
var os = require("os");
// 返回一个对象,该对象包含已分配了网络地址的网络接口
var ifaces = os.networkInterfaces();
const PORT = 8008;
let ipAddress = "0.0.0.0";
// 获取对象地址
Object.keys(ifaces).forEach(function(ifname) {
var alias = 0;
ifaces[ifname].forEach(function(iface) {
if ("IPv4" !== iface.family || iface.internal !== false) {
// skip over internal (i.e. 127.0.0.1) and non-ipv4 addresses
return;
}
if (alias >= 1) {
// this single interface has multiple ipv4 addresses
// console.log(ifname + ":" + alias, iface.address);
ipAddress = iface.address;
} else {
// this interface has only one ipv4 adress
// console.log(ifname, iface.address);
ipAddress = iface.address;
}
++alias;
});
});
console.log("ipAddress",ipAddress);
// 新建服务器
const app = new Koa();
app.use(bodyParser());
app.use(async (ctx, next) => {
ctx.set("Access-Control-Allow-Origin", "*"); // 规定允许访问该资源的外域 URI
console.log(`服务 ${ctx.request.method} ${ctx.request.url}...`);
await next();
});
router.get("/", async (ctx, next) => {
ctx.response.body = {
a: 1,
b: "123",
};
});
// 重定向
router
.all("/", (ctx, next) => {
const url = `http://${ipAddress}:${PORT}/api/queryNumList`;
ctx.body = `
<h1>url error</h1>
<p>url的正确姿势如:
<a href="${url}" target="_blank">${url}</a>
</p>
<p>please check your url!!!</p>
`;
})
// 例子
router.get('/api/employees', async (ctx, next) => {
ctx.response.body = {
status:true,
data:[
{ projecttype: "项目订单实施", totalCount: "26" },
{ projecttype: "售前", totalCount: "2" },
{ projecttype: "项目订单实施", totalCount: "2" },
{ projecttype: "后评估", totalCount: "23" },
{ projecttype: "项目订单实施", totalCount: "26" },
{ projecttype: "运维", totalCount: "62" },
{ projecttype: "试运营", totalCount: "2" }
],
msg:'获取数据成功'
}
});
app.use(router.routes()).use(router.allowedMethods());
app.listen(9000, () => {
console.log(`node服务已经启动, 请访问 localhost:9000`);
});