node
使用 express 搭建服务器
查看代码
js
const express = require("express");
const http = express();
const port = 3000;
// 解析JSON格式的请求体
http.use(express.json());
// 定义路由处理程序
http.get("/", (req, res) => {
res.send("Hello World!");
});
http.get("/about", (req, res) => {
//接受get的参数
const userName = req.query.name;
res.send(userName);
});
// POST请求处理
http.post("/submit", (req, res) => {
const data = req.body; // 这里是POST请求发送的数据
console.log(data.name);
console.log(data.id);
res.send("POST request received");
});
// 启动服务器
http.listen(port, () => {
console.log(`Server is running at http://localhost:${port}`);
});
获取 ip 地址
查看代码
js
var http = require("http");
var server = http.createServer(function (req, res) {
console.log(req.headers["x-forwarded-for"]); // 判断是否有反向代理
console.log(req.socket.remoteAddress); // 判断后端的 socket 的 IP
let ip = req.headers["x-forwarded-for"] || req.socket.remoteAddress;
res.end(ip);
});
server.listen("9098");
静态资源处理
可以访问 public 文件下面的图片文件
app.use(express.static('public'));
中间件
查看代码
js
// 在请求中添加中间件
http.get("/", middleware, (req, res) => {
res.send("Hello World!");
});
// 创建中间件函数
function middleware(req, res, next) {
next();
}
路由模块化
查看代码
js
// 子模块中
const express = require("express");
const router = express.Router();
router.get("/", (req, res) => {
res.send("Hello World!");
});
module.exports = router;
// 主模块中
const userRouter = require("./routes/user");
app.use(userRouter);
// 导入方式2,在访问路径前面默认要添加/user
app.use("/user", userRouter);
中间件
查看代码
js
// 在请求中添加中间件
http.get("/", middleware, (req, res) => {
res.send("Hello World!");
});
// 创建中间件函数
function middleware(req, res, next) {
next();
}
token 验证
查看代码
js
function middleware(req, res, next) {
// 从请求头中获取token
const authHeader = req.headers["authorization"];
if (authHeader == undefined) return res.sendStatus(401); // 如果没有token,返回401
jwt.verify(authHeader, "zhangCode", (err, data) => {
if (err) return res.sendStatus(403); // 如果token无效,返回403
req.data = data; // 将用户信息添加到请求对象上
next(); // 验证成功,继续执行下一个中间件或路由处理器
});
}