解析 express.js 中的传入请求


要接收 http 请求中的某些数据,可以在 url 路径‘/add-username’中添加一个 form。

app.use('/add-username', (req, res,next)=>{
   res.send('<form action="/post-username" method="POST"> <input type="text" name="username"> <button    type="submit"> Send </button> </form>');
});

要解析 http 请求,我们需要第三方库 body-parser:这是一个必需的生产依赖项

npm install –save body-parser

express js 提供中间件 use 函数,以便在添加中间件之前包含一个 body 解析器。

const http = require('http');

const express = require('express');
const bodyParser = require('body-parser');

const app = express();

app.use(bodyParser.urlencoded({extended: false}));

上面显示的 use(0 函数默认使用 next() 函数,因此 http 请求可以在没有任何问题的情况下传递给下一个中间件。

上面的解析器可用于解析简单的表单数据(如输入文本等),但要解析文件、json,我们将使用不同的解析器。

现在,解析请求比用核心 node.js 编写代码更简单。

Express.js 在 http 请求中提供一个属性 body,该属性将返回请求数据。

控制台输出:在 localhost: 3000/add-username 上

data: tutorials point

使用响应重定向请求非常容易,响应有一个 redirect 函数。

此处显示了完整的 App.js 文件 −

const http = require('http');
const express = require('express');
const bodyParser = require('body-parser');
const app = express();
app.use(bodyParser.urlencoded({extended: false}));
app.use('/', (req, res,next)=>{
   next();
});
app.use('/add-username', (req, res,next)=>{
   res.send('<form action="/post-username" method="POST"> <input type="text" name="username"> <button    type="submit"> Send </button> </form>');
});
app.use('/post-username', (req, res, next)=>{
   console.log('data: ', req.body.username);
   res.redirect('/');
});
app.use('/', (req, res,next)=>{
   res.send('<h1> first midleware: Hello Tutorials Point </h1>');
});
const server = http.createServer(app);
server.listen(3000);

在安装任何第三方库后,应手动重新启动 nodemon 以替代依靠 nodemon 自动重新启动(该自动重新启动可能无法正常工作),以生效新的库。

更新日期:2020 年 5 月 13 日

832 次浏览

开启您的 职业生涯

通过完成课程获得认证

开始学习
广告