Content-Type HTTP 标头用于设置资源的类型,常用的有3个:
一般情况下,都会使用 koa-bodyparser 来解析 post 请求的数据:
const Koa = require("koa");
const Router = require("koa-router");
const { bodyParser } = require("@koa/bodyparser");
const app = new Koa();
const router = new Router();
router.post("/api/login", (ctx) => {
console.log(ctx.request.body);
const { name, pwd } = ctx.request.body;
if (name === "下雪天的夏风" && pwd === "123") {
ctx.body = "登录成功";
} else {
ctx.body = {
code: 500,
msg: "用户名或密码错误",
};
}
});
app.use(bodyParser()).use(router.routes());
app.listen(3001);
默认情况下,koa-bodyparser 会解析 application/json
和 application/x-www-form-urlencoded
这2种格式。这是因为配置项 enableTypes 默认为:['json', 'form']
。
所以修改该配置项即可:
app
.use(
bodyParser({
enableTypes: ["json", "form", "text"],
})
)
.use(router.routes());
app.listen(3001);
注意:
Content-Type: text/plain
,那发送的数据就是 String 类型,通过 ctx.request.body
得到的也是 String 类型。use(bodyParser())
需要放到 use(router.routes())
之前才会生效。以上。