Jim
Jim

Reputation: 669

ctx request body is undefined with nodejs

I have a problem, when I post my form, i can't get what is in my post in my API.

this is my post with axios in react :

onSubmit = () => {
    let data = {
        nickname: this.state.nickname,
        password: this.state.password
    }

    axios.post("/api/user/login", { data })
    .then(res => {
        console.log("res from api is => ", res.data);
    })
}

and this is in my API :

import koaBody from "koa-body";

const   app = new koa();
const   router = new Router();

app.use(router.routes());
app.use(koaBody());

router.post("/api/user/login", async(ctx) => {
    console.log("body is => ", ctx.request.body);
    ctx.body = "ok";
});

the problem is ctx.request.body is always undefined... Can you tell me why ? I tried with router.get and I have no problem, it works fine.

Upvotes: 1

Views: 2648

Answers (1)

robertklep
robertklep

Reputation: 203419

You need to load the body parser before the router, otherwise the router will get to handle the requests before the body contents are parsed:

app.use(koaBody());
app.use(router.routes());

Upvotes: 5

Related Questions