9

http://localhost:3000/endpoint?id=83结果为 404(未找到)。所有其他路线都按预期工作。我在这里错过了什么吗?

router
  .get('/', function *(next) {
    yield this.render('index.ejs', {
      title: 'title set on the server'
    });
  })
  .get('/endpoint:id', function *(next) {
    console.log('/endpoint:id');
    console.log(this.params);
    this.body = 'Endpoint return';
  })

koa-router 参数文档

//Named route parameters are captured and added to ctx.params.

router.get('/:category/:title', function *(next) {
  console.log(this.params);
  // => { category: 'programming', title: 'how-to-node' }
});

角度控制器中的请求:

 $http.get('/endpoint', {params: { id: 223 }})
    .then(
      function(response){
        var respnse = response.data;
        console.log(response);
      }
  );
4

2 回答 2

9

你的参数格式不对

用这个替换你的路线

.get('/endpoint/:id', function *(next) {
    console.log(this.params);
    this.body = 'Endpoint return';
  })

请求#查询

.get('/endpoint/', function *(next) {
    console.log(this.query);
    this.body = 'Endpoint return';
  })

请求#param

.get('/endpoint/:id', function *(next) {
    console.log(this.params);
    this.body = 'Endpoint return';
  })
于 2016-09-08T10:24:56.163 回答
7

也许为时已晚,但是对于那些还存在这个问题的人来说,不是关键字this,而是ctx。以下,当与 url 协商时

http://myweb.com/endpoint/45

 .get('/endpoint/:id', async (ctx, next) => {
     console.log(ctx.params);
     this.body = 'Endpoint return';   })

返回以下 json:

{ "id": "45"}

和这个:

 .get('/endpoint/:id', async (ctx, next) => {
     console.log(ctx.params.id);
     this.body = 'Endpoint return';   })

当咨询相同的 url 时返回

45

编辑:好消息是这两个端点确实不同。您可以拥有两个端点,路由器可以根据您在浏览器中键入的 url 在两者之间做出决定。

于 2020-01-22T15:13:14.977 回答