1.介绍
Express 是一个基于 Node.js 平台,快速、开放、极简的 web 开发框架
2.运行第一个express程序
1.创建项目并初始化
创建一个全新的文件夹,在文件夹下打开小黑窗运行 npm init -y 生成package.json文件
2.下载express包
npm i express
3.快速创建web服务器
在项目目录下新建一个app.js文件,输入
//1. 加载express
const express = require('express')
//2. 调用express()
const app = express()
// 3. 设置请求对应的处理函数
app.get('/地址',(req,res)=>{
res.send('hello')
})
4.监听端口号,启动web服务
app.listen(3000,()=>console.log('app listening on port 3000!'))
3.托管静态资源
//1. 加载express
const express = require('express')
//2. 调用express()
const app = express()
//3. 设置请求对应的出路函数
app.use(express.static('public'))
//4. 监听端口号,启动web服务器
app.listen(3000,()=>console.log('app listening on port 3000!'))
此时,所有放在public下的内容可以直接访问,注意,此时在url中并不需要出现public这级目录。在public下新建index.html,可以直接访问到。
4.写接口
接口传参
我们使用ajax请求向服务器接口传参,按http协议的约定,每个请求都有三个部分:
- 请求行: 保存了请求方式,地址,可以以查询字符串的格式附加一部分数据。
- 请求头:它可以附加很多信息,其中content-type用来约定请求体中保存的数据格式。
content-type常见有三种取值:
| content-type的值 | 表示请求体的数据格式 | 示例 |
|---|---|---|
| application/x-www-form-urlencode | 普通键值对象 | a=2&c=1 |
| application/json | json对象 | {a:1,b:{c:1}} |
| multipart/form-data | 上传文件 | file |
1.express写get接口
express框架会自动收集get类型的接口从url地址中传递的查询字符串参数,并自动保存在req对象的query属性中
const express = require('express')
const app = express()
app.get('/get',(req,res)=>{
console.log(req.query)
res.send({name:'张三'})
})
2.post接口-普通键值
app.use(....)之后,在res.body中就会多出一个属性res.body,可以通过req.body来获取post传递的键值对
const express = require('express')
const app = express()
//使用中间件
app.ues(express.urlencoded())
app.post('/add',(req,res)=>{
res.send(req.body)
})
3.post接口-json格式的参数
在post传递参数时,如果要传入的参数比较复杂(多级嵌套),则可以使用json格式上传。
const express = require('express')
const app = express()
app.use(express.json())
// 会自动加入req.body属性,这个属性中就包含了post请求所传入的参数
app.post('/psotJSON',(req.res)=>{
console.log(req.body)
res.send('/postJSON')
})
4.post接口-form-data文件上传
1.安装包
npm i multer
2.使用
const express = require('express')
const app = express()
const multer = require('multer')
const upload = multer({dest:'uploads/'})
// 上传的文件会保存在uploads目录下
app.post("/postfile",upload.single('cover'), function(req,res){
// cover 表示要上传的文件在本次上次数据中的键名
// req.file 记录了文件上传的信息
// req.body 记录了其它普通参数(非文件)的信息
res.send()
})
端框架代码
| 传参方式 | 传参方式 | 后端框架express |
|---|---|---|
| 请求行 | get方式 | req.query |
| 请求体 | application/x-www-form-urlencode | app.use(express.urlencoded()); req.body |
| 请求体 | application/json | app.use(express.json() ); req.body |
| 请求体 | multipart/form-data | 1. 引入包 const multer = require('multer');2. 配置app.post('/apiname', upload.single() , req.body) |