node - koa 获取 Content-Type: text/plain 的数据

2023-12-25 23:34:28

1,Content-Type

Content-Type HTTP 标头用于设置资源的类型,常用的有3个:

  • application/json
  • application/x-www-form-urlencoded,form 表单提交的格式。
  • multipart/form-data,用于上传,
  • text/plain

2,koa 获取请求的数据

一般情况下,都会使用 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/jsonapplication/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()) 之前才会生效。

以上。

文章来源:https://blog.csdn.net/qq_40147756/article/details/135177498
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。