如何获取 koa-router 查询参数?

How to get koa-router query params?

我在前端使用 axios.delete() 执行删除,代码如下

Axios({
    method: 'DELETE',
    url:'http://localhost:3001/delete',
    params: {
        id:id,
        category:category
    }
})

并且我在后端使用 koa-router 来解析我的请求,但是我无法获取我的查询参数。

const deleteOneComment = (ctx,next) =>{
    let deleteItem = ctx.params;
    let id = deleteItem.id;
    let category = deleteItem.category;
    console.log(ctx.params);
    try {
        db.collection(category+'mds').deleteOne( { "_id" : ObjectId(id) } );
}
route.delete('/delete',deleteOneComment)

谁能帮帮我?

koa documentation ctx.request.query

基本上,我认为您误解了 context.paramsquery string

我假设您正在使用 koa-router。使用 koa-router,一个 params 对象被添加到 koa context,它提供对 named route parameters 的访问。例如,如果您使用命名参数 id 声明路由,则可以通过 params:

访问它
router.get('/delete/:id', (ctx, next) => {
  console.log(ctx.params);
  // => { id: '[the id here]' }
});  

要获取通过 HTTP body 传递的查询字符串,需要使用 ctx.request.query,其中 ctx.request 是 koa 请求对象。

您在代码中应该注意的另一件事是,本质上,不建议将 http 删除请求包含在正文中,这意味着您不应将 params 传递给它。

您可以使用ctx.query,然后使用您需要的值的名称。

例如,对于给定的 url:

https://hey.com?id=123

您可以使用 ctx.query.id.

访问 属性 id
router.use("/api/test", async (ctx, next) => {
    const id = ctx.query.id

    ctx.body = {
      id
    }
});