Koa 面试题 目录

Koa 中如何获取查询参数?

推荐答案

在 Koa 中,可以通过 ctx.queryctx.request.query 来获取查询参数。这两个属性会返回一个包含所有查询参数的对象。

-- -------------------- ---- -------
----- --- - ---------------
----- --- - --- ------

------------- ----- -- -
  ----- ----------- - ---------- -- ---- -----------------
  -------- - ------------
---

---------------- -- -- -
  ------------------- -- ------- -- ------------------------
---

例如,访问 http://localhost:3000/?name=John&age=30ctx.query 将返回 { name: 'John', age: '30' }

本题详细解读

1. ctx.queryctx.request.query 的区别

  • ctx.queryctx.request.query 的简写形式,两者实际上是等价的。
  • 它们都返回一个包含查询参数的对象,其中键是参数名,值是参数值。

2. 查询参数的解析

  • Koa 使用 koa-qs 中间件来解析查询字符串。默认情况下,Koa 会自动解析查询字符串并将其转换为对象。
  • 如果查询字符串中有重复的参数名,ctx.query 会将这些值合并为一个数组。

3. 示例

假设访问的 URL 是 http://localhost:3000/?name=John&age=30&hobby=reading&hobby=traveling,那么 ctx.query 将返回:

4. 注意事项

  • 查询参数的值始终是字符串类型。如果需要数字或其他类型,需要手动转换。
  • 如果查询字符串中包含特殊字符(如 &=),Koa 会自动进行 URL 解码。

5. 自定义查询参数解析

如果需要自定义查询参数的解析方式,可以使用 koa-qs 中间件进行配置,或者手动解析 ctx.querystring

这种方式可以更灵活地处理查询字符串,但通常 ctx.query 已经足够满足大多数需求。

纠错
反馈