//web服务如何处理一个请求
url->网络->dns解析->目标服务器
如何响应这个请求 => 路由 //规则
定义路由的两种方式:
1、请求的方法来区分 //get、post
const express = require('express')
const app = express()
app.get('/demo',(req,res) => {
res.json({
name: 'tom get'
})
})
app.post('/demo',(req,res) => {
res.json({
name: 'tom post'
})
})
2、通过uri //路径 例:www.baidu.com/a/bc.html 域名后面的部分为uri
app.get('/user/byname',(req,res) => {
let {name} = req.query
res.json({
name
})
})
app.post('/user/byid',(req,res) => {
let {id} = req.query
res.json({
id
})
})
路由api(不止这些)
all
1、无论客户端使用任意的请求方式都可以得到响应
app.all('/demo',(req,res) => {
res.json({
name: 'tom',
method: req.method
})
})
2、无论客户端使用任意的uri
app.all('*',(req,res) => {
res.json({
name: 'tom',
method: req.method,
path: req.path
})
})
use —— 作为中间件使用
1、可以满足api all的功能
app.use('/demo',(req,res) => {
res.json({
name: 'tom',
method: req.method
})
})
app.use((req,res) => {
res.json({
name: 'tom',
method: req.method,
path: req.path
})
})
*虽然可以实现一样的效果,但是这种情况不建议使用use,use主要是作为中间件使用
路由的拆分
app.js // 入口文件
const express = require('express')
const app = express()
const productRouter = require('./product.router')
//注册路由
app.use('/product',productRouter) //第一个参数是防止不同子路由中有相同名字的接口
product.router.js // 按照需求拆分的路由文件
const express = require('express')
const router = express.Router() //router可以看作express的子对象,最终集合到一起
router.get('/list',(req,res) => {
res.json({
list: [
{
id: 007,
name: '药水'
}
]
})
})
module.exports = router
学习来源:慕课网 一缕孤烟