路由、上传

路由:(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;

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值