路由:(Router)
(1)
创建路由对象:把发送的请求指定给对应的请求函数去执行
var express = require("express");
var app = express();
var router = express.Router();
路由可以像服务器一样添加接口
router.get("/api1", function (req, res) {
res.send("注册接口");
});
直接放入请求管线一个路由对象
app.use(router);
(2)
指定路由前缀
var router2 = express.Router();
router2.get("/register", function (req, res) {
res.send("带前缀的注册接口");
});
router2.get("/login", function (req, res) {
res.send("带前缀的登录接口");
});
// 为管线添加路由时,可以指定路径前缀,只有以路径开头的请求才会
// 匹配到对应的路由中
app.use("/user", router2);
(3)
将路由对象单独写到js文件中,然后在服务器引入(推荐)(模块化)
bin > routers > blogRouter.js
var express = require("express");
var app = express();
var router = express.Router();
router.get("/api1/blog", function (req, res) {
res.send("发了一篇微博");
});
module.exports = router;
server.js中引用
var blogRouter = require("./bin/routers/blogRouter.js");
app.use("/blog", blogRouter);
上传(data-upload)
(1)server.js 文件
var express = require("express");
var app = express();
app.use(express.static("www"));
// 上传或者下载都属于比较复杂的接口,比较复杂的接口建议使用路由
var uploadRouter = require("./bin/routers/uploadRouter.js");
app.use("/api", uploadRouter);
app.listen(3000, function () {
console.log("Server-Running...");
});
(2)bin > routers > uploadRouter.js 文件
// 上传的路由文件
var express = require("express");
// 获得路由对象
var router = express.Router();
// multer模块主要是否则处理multipart/form-data类型的post请求
// 指定此次文件保存的指定位置
var multer = require("multer");
// 配置服务
var upload = multer({
// 设置上传文件的存储位置
dest: "./upload-file",
limits: {
// 单个文件的大小
fileSize: 500 * 1024
},
// 文件过滤
// req此次请求对象 file文件 cb是回调对象
fileFilter: function (req, file, cb) {
// 只要图片
if (file.mimetype.startsWith("image")) {
// 第一个是提示信息,第二个是是否存储
cb(null, true);
} else {
cb({
message: "文件格式不对,只支持图片"
}, false);
}
}
});
// 提供接口
// upload.single 用于接收单个文件
// upload.array 用于接收一个字段中上传的多个文件
// 两个接收函数的函数值都应该是表单中的name值
router.post("/upload", upload.single("ff"), function (req, res) {
/*
.multer将请求中的文件进行存储,存储的信息包括文件的文件名..
如果是单一的文件放到了req.file对象中如果是多个文件放到了
req.files
*/
console.log("file:" + req.file);
// 除了将请求对象中的文件存储之外,multer还可以将本次
// 请求的非蚊子字段解析为对象,存入到req.body
console.log("body:" + req.body);
res.send("文件已经接收...");
});
/*express的请求处理管线可以插入异常处理函数,
第一个参数是错误信息,第二个是请求,第三个是响应*/
router.use(function (err, req, res, next) {
if (err) {
res.send("err:" + err.message);
}
});
module.exports = router;