ZijianHe / koa-router

Router middleware for koa.

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Getting 404 for all router.post response

deviantdes opened this issue · comments

Have been looking around but could not find any solution regarding router.post. I am not able to get any response from all the post handlers, the responses from the contexts are 404 and does not contain any body.

Here is my html to submit a test post request

  <form action="http://localhost:3000/api/test" enctype="multipart/form-data" method="POST">
    <input type="hidden" name="name" value="test_name" />
    <input type="hidden" name="incomingIP" value="10.20.30.40" />
    <input type="submit" value="submit form" />
  </form>

Here is my router file (routerclass.route.js)

import Router from 'koa-router';

const router = new Router({ prefix: '/api' });

router.post('/test',  async (ctx,next) =>{
    console.log(ctx);
});

export default router;

the app.js

import koa from 'koa';
import bodyParser from 'koa-bodyparser';
import routerClass from './routes/routerclass.route';

const app = new koa();

app.use(bodyParser());
app.use(routerClass.routes());
app.use(routerClass.allowedMethods());

And the print out of the ctx

{
  request: {
    method: 'POST',
    url: '/api/test',
    header: {
      host: 'localhost:3000',
      connection: 'keep-alive',
      'content-length': '31',
      'cache-control': 'max-age=0',
      origin: 'http://localhost:3000',
      'upgrade-insecure-requests': '1',
      'content-type': 'multipart/form-data; boundary=----WebKitFormBoundaryuEls9YxGC2Sm2s62',
      'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.88 Safari/537.36',
      'sec-fetch-user': '?1',
      accept: 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9',
      'sec-fetch-site': 'same-origin',
      'sec-fetch-mode': 'navigate',
      referer: 'http://localhost:3000/test/',
      'accept-encoding': 'gzip, deflate, br',
      'accept-language': 'en-US,en;q=0.9',
      cookie: ''
    }
  },
  response: {
    status: 404,
    message: 'Not Found',
    header: [Object: null prototype] {
      'content-type': 'text/plain; charset=utf-8',
      'content-length': '33'
    }
  },
  app: { subdomainOffset: 2, proxy: false, env: 'development' },
  originalUrl: '/api/test',
  req: '<original node req>',
  res: '<original node res>',
  socket: '<original node socket>'
}

The post API is able to hit, but the ctx that is printed shows the returned response is 404, and there is no body included.

Feels like im missing an await or usage of another koa library somewhere

any help is appreciated.

I'm with the same issue, but except that is for one route only. All other is ok.

The router needs to return something (for example an empty array).

You need to set your ctx.body to something.

@jonathangaldino @Pryrios i think you all should head over here for better maintained project https://github.com/koajs/router . also it's officially by koa

thanks @Pryrios , problem was solved after setting ctx.status = 200.

Will be closing this issue