express框架的简介
Express 是一个保持最小规模的灵活的 Node.js Web 应用程序开发框架,为 Web 和移动应用程序提供一组强大的功能。它有丰富的HTTP工具以及来自Connect框架的中间件随取随用,使创建强健、友好的API变得快速又简单。
express的安装
npm init -y
初始化
npm i express
安装插件
下面是一个exprss的小demo
//导入express模块
const express = require("express");
//创建服务器对象
const app = express();
//建立监听
app.listen(3000,function(){
console.log("success")
})
exprss里面常用的中间件
- body-parser
- body-parser是一个HTTP请求体解析的中间件,使用这个模块可以解析JSON、Raw、文本、URL-encoded格式的请求体.
- 通常用于post请求中,用于解析请求体返回的数据
- 安装
-
npm init -y
npm i body-parser
const express = require("express"); //导入中间件模块 const bodyParser = require("body-parser"); //创建服务器对象 const app = express(); //这句一定一定要加上,要不然返回的结果是undefined var urlencodedParser = bodyParser .urlencoded({ extended: false }) app.post('/r', urlencodedParser, function (req, res) { res.send('welcome, ' + req.body.username) }) app.post("/register", (req, res) => { console.log(req); console.log(req.body); }) app.listen(3000,function(){ console.log("success") })
-
- multer
- 类似body-parser的功能,区别于body-parser的主要是multer可以传递文件,而body-parser不能,但是他们都是用于post请求
npm i multer
const express = require("express"); const dbTool = require("./dbTool"); const path = require("path"); //导入multer模块 const multer = require('multer'); //图片根目录 const upload = multer({ dest: 'views/imgs/' }) //接口名 图名名 app.post('/updatahero', upload.single('heroIcon'), function (req, res, next) { const heroName = req.body.heroName; const heroSkill = req.body.heroSkill; const id = req.body.id; //拼接图片路径 const heroIcon = path.join("imgs", req.file.filename); console.log(id); // 加入数据库 dbTool.update("cqList", {_id : dbTool.ObjectId(id)}, {heroName, heroIcon, heroSkill}, result => { res.send({ msg : "ok", status : 100 }) }) })
- cookie-parser 解析Cookie的工具。通过req.cookie就可以获取到传过来的cookie,并把他们转化成对象
express静态托管
使用 Express 中的 express.static 内置中间件函数,可以提供诸如图像、CSS 文件和 JavaScript 文件之类的静态文件。
// 静态资源托管
app.use(express.static("views"));
这样我们就可以直接从服务器访问views里面的静态文件,比如图片、html文件、js文件、css文件等
request和response
- Request 对象 :
- request对象表示HTTP请求,包含了请求查询字符串,参数,内容,HTTP头部等属性。
- 常用属性:
- req.path:获取请求路径
- req.query:获取URL的查询参数串
- req.body / req.cookies:获得「请求主体」/ Cookies
- req.route:获取当前匹配的路由
- req.ip:获取主机名和IP地址
- Response 对象
- response对象表示HTTP响应,即在接收到请求时向客户端发送的HTTP响应数据。
- 常用属性
- res.cookie(name,value [,option]):设置Cookie
- res.clearCookie():清除Cookie
- res.json():传送JSON响应
- res.send():传送HTTP响应
- res.sendFile(path [,options] [,fn]):传送指定路径的文件 -会自动根据文件extension设定Content-Type
- 区别于联系:Request 对象和 Response 对象起到了服务器与客户机之间的信息传递作用。Request 对象用于接收客户端浏览器提交的数据,而 Response 对象的功能则是将服务器端的数据发送到客户端浏览器。