express

140 阅读2分钟

express

基本使用:

const express = require('express');

const app = new express();

app.listen('4000', () => {

  console.log('服务器启动');

});



const middlerwares = [

  (req, res, next) => {

    console.log('1');

    next();

  },

  (req, res, next) => {

    console.log('2');

    next();

  },

  (req, res, next) => {

    console.log('3');

    next();

  },

];

app.use('/', middlerwares);

app.use('/api', (req, res, next) => {

  res.send('api');

});

listen监听端口号,use用于定义路由,它的第二个参数是中间件,middlerwares定义了一个中间件数组,当对应的路由匹配的时候,路由指定的中间件会按照定义的顺序执行,想要执行下一个中间件,必须使用next()来才可进入下一个可执行的中间件。

express路由:

//1

app.use('/test1', function (req, res, next) {

  res.send('hello test1');

});



//2

app.get('/test2', function (req, res, next) {

  res.send('hello test2');

});



//2

app.use('/test3', router);

use和get方式都能够定义路由路径,区别是use的参数可以是callback或者router对象,但是get定义的路由只能是callback.

请求方式

1.  get     获取信息请求

2.  post    添加数据请求

3.  delete  删除信息请求

4.  patch   修改信息请求(补丁)

3.  put     修改信息请求(覆盖)

这几个的不同之处主要还是会使代码功能更语义化,当请求路由为同一值时,我们也可以通过不同的请求方式定义多个路由匹配。

获取路由参数

get请求参数

//请求:http://localhost:4000/test?id=4

app.use('/test', function (req, res, next) {

  res.send(req.query);

});

//返回:{"id":"4"}



//请求http://localhost:4000/test/5

app.use('/test/:id', function (req, res, next) {

  res.send(req.params);

});

//返回:{"id":"5"}

post请求获取参数:需要安装body-parser中间件

const bodyParser = require('body-parser');

//解析post表单数据

app.use(bodyParser.urlencoded({ extended: true }))

//解析post方式传入的json数据

app.use(bodyParser.json())



//路由参数解析

app.post('/index',(req,res)=>{

  console.log(req.body);

})

当一个路径有多个匹配规则时,使用app.use,否则使用相应的app.method(get、post)

res参数

//用于向浏览器客户端响应数据 会自带合适的响应头

res.send()



// 发送文件给浏览器,并根据文件后缀名自动设置Content-Type

res.sendFile(path.join(__dirname, 'index.html'))



// 设置响应头

res.set('Content-Type', 'text/plain')

res.set({

  'Content-Type': 'text/plain',

  'cute': 'fangfang'

})

// 重定向 

res.redirect('/index')

静态资源配置

京台资源服务中间件(内置中间件)

app.use(express.static('./public'));