获取请求的参数是每个web后台的必经之路。
Nodejs 获取 url参数,适用于 koa,express

  1. req.body
    1. 需要 body-parser中间件才可以使用 req.body
  2. req.query
  3. req.params,
    1. nodejs默认提供,无需载入其他中间件
  4. 获取 request参数文档 http://expressjs.com/en/5x/api.html#req
  5. 弃用的方法 req.param
    1. Deprecated. Use either req.params, req.body or req.query, as applicable
    2. 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

  1. 'use strict';
  2. const Controller = require('egg').Controller;
  3. class HomeController extends Controller {
  4. async list() {
  5. const {ctx} = this;
  6. ctx.body = ctx.query
  7. }
  8. }
  • ctx.query 默认为空,也就是什么参数也没有传递

image.png

params参数

  1. // router.js
  2. router.get('/users/list/:id', controller.user.lists);

post

context

ctx.requset跟ctx.req的区别

  1. ctx.request 是Koa2中context经过封装的请求对象,用起来更直观和简单
  2. ctx.req 是context提供的node.js原生HTTP请求对象,可以得到更多的内容,适合深度开发

req.body

  1. 用来解析POST请求中的数据,默认是underfined
  2. 解析body不是nodejs默认提供的,需要载入body-parser中间件才可以使用req.body
  1. aios.post('/api/list', {id: 23, name: 'user'}).then()

body-parser

req.query

  1. 用于GET请求,解析GET里的参数,默认为{}
  2. URL的?后的参数
    1. https://www.lulongwen/search?q=user&name=lucy&id=3

query-string

  1. 对象转 url字符串
  2. url字符串转 对象

qs-node

node自带的参数转换

req.params

  1. 用于restful风格url中的参数的解析,默认 {}
    1. 例如路由是: /api/list/:id
    2. 那么 id属性可作为 req.params.id
  2. req.params包含路由参数,在URL的路径部分
  3. nodejs默认提供,无需载入其他中间件
  4. 参考文档 http://expressjs.com/en/5x/api.html#req.params
    1. https://www.lulongwen/api/list/23

req.cookies

  1. 获取 cookie
  2. 要使用 cookie-parser https://www.npmjs.com/package/cookie-parser