【问题标题】:Koa router: How to get query string params?Koa 路由器:如何获取查询字符串参数?
【发布时间】:2017-09-01 14:04:39
【问题描述】:

我正在使用 koa-router。

如何获取请求的查询字符串参数?

这是我写的最好的:

import koaRouter from 'koa-router';

const router = koaRouter({ prefix: '/courses' });

router.get('/', async (ctx) => {
        console.log(ctx.qs["lecturer"]);
    });

qs 未定义

任何帮助将不胜感激!

【问题讨论】:

    标签: javascript node.js query-string koa koa-router


    【解决方案1】:

    根据文档,应该有一个ctx.request.query,即表示为对象的查询字符串项。

    【讨论】:

    • ctx.request.query 未定义,尽管 ctx.request.url 是 '/api/courses?lecturer=John_Smith'
    • @Alon 你如何将路由器安装到应用程序上?
    • 我不知道发生了什么变化,但突然 ctx.request.query 工作了
    • @JosephAstrahan 您需要重新访问您的编辑和评论。这是相当误导性的评论和编辑。 @Cory Robinson 是对的。它应该只是来自koactx.query,其中koa-router 只是与请求as mentioned here 一起传递。如果 OP 只要求“url 参数”,那么你是对的,但问题是关于“查询字符串”参数。不是一回事。
    • 这个答案是错误的。在撰写本文时,正确的用法是 ctx.request.query(或别名 ctx.query)。
    【解决方案2】:

    您可以使用ctx.query(或长手ctx.request.query

    app.use( (ctx) => console.log(ctx.query) )

    【讨论】:

    • 有趣的是,我的 WebStorm 在调试器中检查 ctx 时没有显示此类属性“ctx.query”,但在直接访问时它确实有效。
    • @dzenly 这是因为那实际上是一个快捷方式(getter),实际路径是ctx.request.query
    猜你喜欢
    • 1970-01-01
    • 2017-05-27
    • 1970-01-01
    • 1970-01-01
    • 2016-11-24
    • 2011-05-06
    • 2013-04-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多