在express.js中解析传入的请求

要在http request中接收一些数据,让我们在url路径'/ add-username'上添加一个表单:

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请求,我们需要一个第三方库主体解析器:这是生产必需的依赖项

npm install –保存正文解析器

express js提供了中间件使用功能,以在添加中间件之前包含主体解析器。

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请求中提供了一个属性主体,它将返回请求数据。

控制台输出:在本地主机上:3000 / add-username

数据:nhooo.com

重定向请求很容易,响应具有重定向功能。

完整的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 nhooo.com </h1>');
});
const server = http.createServer(app);
server.listen(3000);

安装任何第三方库后,应手动重新启动nodemon才能使新库生效,而不是依赖于nodemon可能无法正常工作的自动重新启动。