Express 是一种保持最低程度规模的灵活 Node.js Web 应用程序框架,为后台开发提供了很大便利,这里记录下 Express 常见的几个 API。
express.xxx
express.json(),内置中间件,可以把 request.body 是 json 的转化为对象。
const express = require('express')
const {request, response} = require('express')
const app = express()
app.use(express.json())
app.use((request, response, next)=>{
console.log('request', request.body)
response.send('hi')
next()
})
app.listen(3000, ()=>{
console.log('listen 成功')
})
express.static(root),内置中间件,默认做静态服务器,只要访问路径在 root 里面有,就返回 root 目录下的该文件,如果没有,就next。
express.urlencoded(),内置中间件,同 express.json(),只是 request.body 是 x-www-form-urlencoded。
app.xxx
app.set(name, value),配置设置,放在中间件最开头。
// name是views时,渲染视图所在目录,默认value为'/views'
app.set('views', 'xxx')
// name是view engine,表示渲染引擎,如pug/ejs。
// yarn add pug 或者 yarn add ejs
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子应用。
// router.js
const express = require("express");
const router = express.Router();
router.get('/', ()=>{})
router.get('/:id', ()=>{})
router.get('/:id/edit', ()=>{})
module.exports = router
···
const user = require('./router/user')
···
app.use('/users', user)
// 相当于
app.get('/users',()=>{})