--express是开发后端的。我从请求、路由、响应三方面说下--

请求


request包含了app作为其属性,所以通过req.app来访问app的所有权限。

request.baseUrl可以获得app.use监听的路径。

request.body可以获取请求存储在主体的参数,不过正常情况下都是undefined,所以才需要使用诸如express.json()或的正文解析中间件时进行填充express.urlencoded() 。

request.cookies可以获取请求里的cookie,如果没有返回空对象。

request.hostname可以获取域名,如果你要用得上的话。

request.query和request.params也可以获取参数,但query只需要在路由上写 ?a=1&b=2 之类的附加值就可以获得,而params需要请求固定设置或路由上设置 /user/:name 之类的。

request有一些方法,

req.accepts(types),根据请求的 Accept HTTP标头字段检查指定的内容类型是否可接受,以下三个方法基本也是在设置headers的头部字段

req.acceptsCharsets(charset [,...]),

req.acceptsEncodings(encoding [,...]),

req.acceptsLanguages(lang [, ...])

路由


router.all(path, [callback, ... ] callback)
与 methods 相同,适配所有的方法

router.methods(path, fn)
get/post/put/delete/update 对应的请求方法进行响应

router.param(name, callback)
构造一个参数触发器,根据参数出发回调
即使参数在多个路由中匹配,在请求-响应周期中也仅会调用一次参数回调

router.use([path], [function], funtion)
中间件的使用或者对路由的响应

router.route(path)
返回单个路由的实例,然后您可以使用该路由使用可选的中间件来处理HTTP动词。使用router.route()以避免重复请求的响应

响应


首先说属性,简称Response为res

res也可以访问app,也有个loacals属性(但只能在本次请求周期使用)

res有21个方法,这里挑几个常用的记录:

append(field [, value])用于设置头部的属性和值;

cookie(name, value [, options])用于设置cookie;

clearCookie(name, [, options])用于清除cookie;

res.download(path [, filename] [, options] [, fn])用于响应用户,下载指定的静态文件等;

res.end([data] [, encoding])结束响应,和node的一致;

res.format(object)这个根据请求的accept字段值不同做不同的响应;

res.send([body])用于发送响应,但能发送很多类型的数据,除了文件

res.sendFile(path [, options] [, fn])和send相似,但传送文件,注意path是绝对路径

res.status(code)用于发送状态码,例如403等