获取请求的参数是每个web后台的必经之路。
Nodejs 获取 url参数,适用于 koa,express
- req.body
- 需要 body-parser中间件才可以使用 req.body
- req.query
- req.params,
- nodejs默认提供,无需载入其他中间件
- 获取 request参数文档 http://expressjs.com/en/5x/api.html#req
- 弃用的方法 req.param
- Deprecated. Use either req.params, req.body or req.query, as applicable
- express文档 https://www.expressjs.com.cn/4x/api.html#req.param
eggjs获取请求参数
query参数
获取 query参数,http://www.lulonwen.com?id=23&user=lucy
app/controller/home.js
'use strict';
const Controller = require('egg').Controller;
class HomeController extends Controller {
async list() {
const {ctx} = this;
ctx.body = ctx.query
}
}
- ctx.query 默认为空,也就是什么参数也没有传递
params参数
// router.js
router.get('/users/list/:id', controller.user.lists);
post
context
ctx.requset跟ctx.req的区别
- ctx.request 是Koa2中context经过封装的请求对象,用起来更直观和简单
- ctx.req 是context提供的node.js原生HTTP请求对象,可以得到更多的内容,适合深度开发
req.body
- 用来解析POST请求中的数据,默认是underfined
- 解析body不是nodejs默认提供的,需要载入body-parser中间件才可以使用req.body
aios.post('/api/list', {id: 23, name: 'user'}).then()
body-parser
req.query
- 用于GET请求,解析GET里的参数,默认为{}
- URL的?后的参数
https://www.lulongwen/search?q=user&name=lucy&id=3
query-string
- 对象转 url字符串
- url字符串转 对象
qs-node
node自带的参数转换
req.params
- 用于restful风格url中的参数的解析,默认 {}
- 例如路由是: /api/list/:id
- 那么 id属性可作为 req.params.id
- req.params包含路由参数,在URL的路径部分
- nodejs默认提供,无需载入其他中间件
- 参考文档 http://expressjs.com/en/5x/api.html#req.params
https://www.lulongwen/api/list/23
req.cookies
- 获取 cookie
- 要使用 cookie-parser https://www.npmjs.com/package/cookie-parser