使用 Express 处理 POST 请求

您所在的位置:网站首页 post上传json数据file 使用 Express 处理 POST 请求

使用 Express 处理 POST 请求

2024-01-12 01:05| 来源: 网络整理| 查看: 265

这是我参与11月更文挑战的第12天,活动详情查看:2021最后一次更文挑战

Express 可以很容易地为 POST 请求注册路由处理程序。下面是一个基本的 POST 请求处理程序。

const express = require('express') const app = express() app.post('/', (req, res) => { res.end('Hello, World!') }) app.listen(5000)

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

const data = await axios.post('http://localhost:5000/', {}) console.log(data) // 'Hello, World!' JSON 请求体

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

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

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

const axios = require('axios') const express = require('express') const app = express() // 解析此应用程序的 JSON 数据。确保在路由处理程序之前放置 app.use(express.json()) app.use(express.json()) app.post('*', (req, res) => { console.log(req.body) // 包含解析 JSON 的 JavaScript 对象 res.json(req.body) }) await app.listen(5000) const res = await axios.post('http://localhost:5000/', { answer: 42 }) console.log(res.data) // `{ answer: 42 }` URL 编码的请求正文

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

const axios = require('axios') const express = require('express') const app = express() app.use(require('body-parser').urlencoded({ extended: false })) app.post('*', (req, res) => { console.log(req.body) // { answer: 42 } res.json(req.body) }) await app.listen(5000) const headers = { 'Content-Type': 'application/x-www-form-urlencoded' } const res = await axios.post('http://localhost:5000/', 'answer=42', { headers }) console.log(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', (req, res) => { const form = new formidable.IncomingForm() // 解析 req 并上载所有相关文件 form.parse(req, (err, fields, files) => { if (err != null) { console.log(err) return res.status(400).json({ message: err.message }) } // files 对象包含已上载的所有文件。Formidable 将解析每个文件并为您上载到临时文件。 const [firstFileName] = Object.keys(files) res.json({ filename: firstFileName }) }) }) await app.listen(5000)


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3