Express 是一种保持最低程度规模的灵活 Node.js Web 应用程序框架,为后台开发提供了很大便利,这里记录下 Express 常见的几个 API。

express.xxx

express.json(),内置中间件,可以把 request.body 是 json 的转化为对象。

  1. const express = require('express')
  2. const {request, response} = require('express')
  3. const app = express()
  4. app.use(express.json())
  5. app.use((request, response, next)=>{
  6. console.log('request', request.body)
  7. response.send('hi')
  8. next()
  9. })
  10. app.listen(3000, ()=>{
  11. console.log('listen 成功')
  12. })

express.static(root),内置中间件,默认做静态服务器,只要访问路径在 root 里面有,就返回 root 目录下的该文件,如果没有,就next。
express.urlencoded(),内置中间件,同 express.json(),只是 request.body 是 x-www-form-urlencoded。

app.xxx

app.set(name, value),配置设置,放在中间件最开头。

  1. // name是views时,渲染视图所在目录,默认value为'/views'
  2. app.set('views', 'xxx')
  3. // name是view engine,表示渲染引擎,如pug/ejs。
  4. // yarn add pug 或者 yarn add ejs
  5. app.set('view engine', pug)

app.get(name),获取app.set的设置。
app.get/post/put/···(‘/xxx’, fn),get/post/put/···请求。
app.locals.xxx 相当于全局变量,可以跨文件获取到。

request.xxx

req.params,可以匹配到路由中的 params,不含?后面字符串。
req.query, 可以返回 url 的查询字符串。
req.xhr,如果请求头有 ‘X-Requested-With’ 和 ‘XMLHttpRequest’ ,就会认为是 AJAX 请求,返回 true。
req.param(‘xxx’),可以返回 url查询字符串的 xxx,或者路由的 /xxx。
req.range(size), 从服务器请求特定范围,返回206的状态码。

response.xxx

res.set(field),设置请求头。
res.status(code),设置HTTP status code。
res.format(object),一个url设置不同的返回格式。
res.location(path),重定向到path,前面需要有 res.status(301)。
res.send(body),发送消息体,一次性使用,不可以与write共用。
res.write(body),发送消息体,可以多次。

router.xxx

操作路由,类似小型的app.xxx子应用。

  1. // router.js
  2. const express = require("express");
  3. const router = express.Router();
  4. router.get('/', ()=>{})
  5. router.get('/:id', ()=>{})
  6. router.get('/:id/edit', ()=>{})
  7. module.exports = router
  1. ···
  2. const user = require('./router/user')
  3. ···
  4. app.use('/users', user)
  5. // 相当于
  6. app.get('/users',()=>{})