如何获取 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.params
和 query 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
}
});
我在前端使用 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.params
和 query 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
}
});