ctx 请求正文未使用 nodejs 定义

jim*_*m2k 1 request node.js koa

我有一个问题,当我发布表单时,我无法在 API 中获取帖子中的内容。

这是我在 React 中使用 axios 的帖子:

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);
    })
}
Run Code Online (Sandbox Code Playgroud)

这是我的 API 中的:

从“koa-body”导入 koaBody;

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";
});
Run Code Online (Sandbox Code Playgroud)

问题是 ctx.request.body 总是未定义...你能告诉我为什么吗?我尝试使用 router.get ,没有问题,工作正常。

rob*_*lep 5

您需要在路由器之前加载正文解析器,否则路由器将在解析正文内容之前处理请求:

app.use(koaBody());
app.use(router.routes());
Run Code Online (Sandbox Code Playgroud)