1

我正在尝试使用 Koa 构建一个简单的 REST API。为此,我正在使用 koa-router。我有两个问题:

  1. 每当我尝试在 mainRouter.ts 中向我的 POST 方法添加参数时,例如“:id”,邮递员都会显示“未找到”。我的要求:http://localhost:3000/posttest?id=200

  2. 我无法使用“ctx.params”获取参数。我在 koajs 页面上也找不到任何关于它的信息,但我确实到处都能看到这样的例子?!

这是我的应用程序:

应用程序.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);

主路由器.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;
    });
4

1 回答 1

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

在这种情况下,您将像这样编写路由处理程序:

router.post('/posttest/:id', async (ctx, next) => {
  console.log(ctx.params.id); // 200 
});
于 2017-10-15T01:04:19.547 回答