Express基本操作

Posted by Mars . Modified at

Express框架基本操作

引入与创建express app实例

const express = require('express')
const app = express()

基本路由

app.METHOD(PATH, HANDLER)
  • METHOD: http方法;
  • PATH: 请求路径,一旦匹配执行handler;
  • HANDLER: 路径匹配后的执行函数。
// 收到post请求,且路径为'/'时,返回'Got a POST request'。
app.post('/', function (req, res) {
  res.send('Got a POST request')
})

请求与响应api

Express的请求与响应对象,继承自Nodehttp.IncomingMessagehttp.OutgoingMessage

Express对它们进行了扩展。

请求对象request

request对象有以下api:

  • req.app
  • req.baseUrl
  • req.body
  • req.cookies
  • req.fresh
  • req.hostname
  • req.ip
  • req.ips
  • req.method
  • req.originalUrl
  • req.params
  • req.path
  • req.protocol
  • req.query
  • req.route
  • req.secure
  • req.signedCookies
  • req.stale
  • req.subdomains
  • req.xhr

响应对象response

中间件 Middleware

中间件的含义

中间件: 在客户端请求到达Express,与Express处理这个请求的中间,对请求进行拦截,从而执行一些其他逻辑的组件。

在Express中,app.use(fn)这个api可以为Express应用实例设置中间件。

app.use(fn)的功能是:对任何一个到达的请求,执行一次fn(不区分请求的具体形式)

Express中间件函数fn接受三个参数:fn(req, res, next):

  • req: 请求对象;
  • res: 响应对象;
  • next: 交出控制权,去往下一个处理流程。(可以直接调用:next());

中间件可以实现以下功能:

  • 执行任意代码;
  • 对请求对象req和响应对象res进行修改;
  • 结束请求-响应循环;
  • 交出执行权,给下一个中间件。

中间件的实际效果,与它的设置位置有关

因为所有请求到达Express,都是按从上到下的顺序依次处理的。中间件设置在哪里,请求就在哪里处理。

其实路由也是中间件?

是的,路由只是一种特殊的中间件。路由中间件的功能是:只对匹配到相同路径的请求进行处理,否则执行next()向下交付。

中间件是Express核心的设计

中间件是Express最为核心的一个设计,它的好处是:可以在不修改业务逻辑代码的情况下,任意添加我们想要的功能。

Express的功能就是由一个个中间件先后串联完成的。

中间件,可以理解为是面向切面编程AOP的一种实现。

Express中间件的分类

  • 应用程序级中间件:

托管静态文件

托管静态文件,相当于公开了某个文件夹的内容。当用户请求对应目录的静态文件,则返回对应的文件。

使用express.static()中间件实现对某个路径下文件的静态托管。

express.static(rootPath, [options]);

设置方式:

app.use(path, express.static('public'));

含义是:当用户匹配path时,映射到对应的public文件夹,获取对应的静态文件返回给用户。

如果不提供path,则默认是根目录。

// 用户访问`域名/static/静态文件名`,则返回public文件夹下对应文件给用户。
app.use('/static', express.static('public'));
Keywords: JavaScript
previousPost nextPost
已经有 1000000 个小伙伴看完了这篇推文。