我正在尝试使用Koa构建一个简单的REST API。为此,我使用的是koa-router。我有两个问题:
每当我尝试在mainRouter.ts中的POST-Method中添加参数时,如":id",邮递员会显示"未找到"。我的要求:http://localhost:3000/posttest?id=200
我无法使用" ctx.params"获取参数。我也无法在koajs页面上找到任何关于它的信息,但我确实看到这样的例子到处都有?!
这是我的应用:
app.ts
import * as Koa from 'koa';
import * as mainRouter from './routing/mainRouter';
const app: Koa = new Koa();
app
.use(mainRouter.routes())
.use(mainRouter.allowedMethods());
app.listen(3000);
mainRouter.ts
import * as Router from 'koa-router';
const router: Router = new Router();
router
.get('/', async (ctx, next) => {
ctx.body = 'hello world';
});
router
.post('/posttest/:id', async (ctx, next) => {
ctx.body = ctx.params.id;
});
export = router;
如果我将POST方法更改为此方法,那么我会得到" 200":
router
.post('/posttest', async (ctx, next) => {
ctx.body = ctx.query.id;
});
答案 0 :(得分:0)
如果您在请求中使用查询字符串,请执行以下操作:
x=0
while x<6:
print '\ '*(2*x)+'! '*(22-(4*x))+'/ '*(2*x)
x+=1
然后您的路由处理程序应该使用http://localhost:3000/posttest?id=200
,而不是ctx.query
:
ctx.params
如果您要发送此类请求,则只能使用router.post('/posttest', async (ctx, next) => {
console.log(ctx.query.id); // 200
});
:
ctx.params
在这种情况下,你会像这样编写路由处理程序:
http://localhost:3000/posttest/200