使用 Express 处理 POST 请求

发布于 2023-03-12 22:57:12 字数 3873 浏览 75 评论 0

Express 使得为 POST 请求注册路由处理程序变得容易。 这是一个基本的 POST 请求处理程序。

const express = require('express');

const app = express();

app.post('/', function requestHandler(req, res) {
  res.end('Hello, World!');
});

const server = await app.listen(3000);

上面的代码在端口 3000 上启动了一个 Express 服务器,它处理对 / 端点。 等 HTTP 客户端向服务器发送请求 然后您可以使用 Axios

const data = await axios.post('http://localhost:3000/', {}).then(res => res.data);
data; // 'Hello, World!'

JSON 请求体

POST 请求不同于 GET 请求 ,因为 POST 请求允许在 HTTP 请求体 中发送数据。 例如下面的代码在请求正文中发送一个带有 JSON 对象的 HTTP POST 请求:

const axios = require('axios');
const res = await axios.post('http://localhost:3000/', {
  answer: 42
});

默认情况下,Express 不解析 HTTP 请求主体,但它确实有一个内置的 中间件 来填充 req.body 具有已解析请求正文的属性。 例如 app.use(express.json()) 是您告诉 Express 自动为您解析 JSON 请求主体的方式。

const express = require('express');
const app = express();

// Parse JSON bodies for this app. Make sure you put
// `app.use(express.json())` **before** your route handlers!
app.use(express.json());

app.post('*', (req, res) => {
  req.body; // JavaScript object containing the parse JSON
  res.json(req.body);
});
const server = await app.listen(3000);

// Demo showing the server in action
const axios = require('axios');
const res = await axios.post('http://localhost:3000/', {
  answer: 42
});
res.data; // `{ answer: 42 }`

URL 编码请求体

Express 有一个官方支持的模块 body-parser ,其中包括一个 用于 URL 编码请求主体的解析器 提交的请求主体一样,就像 HTML 表单

const express = require('express');
const app = express();
app.use(require('body-parser').urlencoded({ extended: false }));
app.post('*', (req, res) => {
  req.body; // { answer: 42 }
  res.json(req.body);
});
const server = await app.listen(3000);

// Demo of making a request with a URL-encoded body.
const axios = require('axios');
const headers = {
  'Content-Type': 'application/x-www-form-urlencoded'
};
const res = await axios.
  post('http://localhost:3000/', 'answer=42', { headers });

res.data; // { answer: 42 }

文件上传

POST 请求通常用于文件上传 。 Express 本身并不能使上传文件变得容易,但是有几个 npm 模块可以为您处理文件上传。 Formidable 是最流行的 Express 文件上传库。 以下是如何使用 Formidable 上传文件:

const app = require('express')();
const formidable = require('formidable');
const fs = require('fs');

app.post('/upload', function(req, res) {
  const form = new formidable.IncomingForm();
  // Parse `req` and upload all associated files
  form.parse(req, function(err, fields, files) {
    if (err != null) {
      console.log(err)
      return res.status(400).json({ message: err.message });
    }

    // The `files` object contains all files that were uploaded. Formidable
    // parses each file and uploads it to a temporary file for you.
    const [firstFileName] = Object.keys(files);

    res.json({ filename: firstFileName });
  });
});

const server = await app.listen(3000);

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据

关于作者

文章
评论
24 人气
更多

推荐作者

lanyue

文章 0 评论 0

海螺姑娘

文章 0 评论 0

Demos

文章 0 评论 0

亢龙有悔

文章 0 评论 0

海未深

文章 0 评论 0

浅忆流年

文章 0 评论 0

    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文