博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Express全系列教程之(四):获取Post参数的两种方式
阅读量:4317 次
发布时间:2019-06-06

本文共 2330 字,大约阅读时间需要 7 分钟。

一、关于POST请求

post方法作为http请求很重要的一部分,几乎所有的网站都有用到它,与get不同,post请求更像是在服务器上做修改操作,它一般用于数据资源的更新。

相比于get请求,post所请求的数据会更加安全。上一章中我们发现get请求会在地址栏显示输入的用户名和密码(有中文时会转化为BASE64加密),而post请求则会将数据放入http包的包体中,这使得别人无法直接看到用户名和密码!

 

二、Express如何设置POST请求

1.我们的知道,首先我们得知道在form表单进行post请求,enctype属性一般设置为“application/x-www-form-urlencoded”,如果设置成multipart/form-data,则多用于文件上传,如下:

  之后,我们可以使用npm提供的body-parser或者connect-multiparty来获取post数据。我也会把两种方式都进行演示:

(1)、body-parser

Express中默认都使用body-parser作为请求体解析post数据,这个模块也能解析:JSON、Raw、文本、URL-encoded格式的请求体。

首先在项目目录安装body-parser:

cnpm install body-parser --save

  在项目app.js中,引用和设置该模块:

const bodyParser=require("body-parser");// 解析以 application/json 和 application/x-www-form-urlencoded 提交的数据var jsonParser = bodyParser.json();var urlencodedParser = bodyParser.urlencoded({ extended: false });

  

bodyParser.json()很明显是将json作为消息主题,再且常见的语言和浏览器大都支持json规范,使得json处理起来不会遇上兼容性问题。

application/x-www-form-urlencoded:
如果form表单不设置enctype属性,那么他默认就会是这种。
之后获取数据:

app.post("/",urlencodedParser,function(req,res){    	res.send(req.body);    });

  

在中间添加urlencodedParser,请求是依然使用req.body获取数据。

下面是一个完整的实例:
index.html:

			
用户:
密码:

  app.js:

const express=require("express");const bodyParser=require("body-parser");var app=express();// 解析application/json数据var jsonParser = bodyParser.json();// 解析application/x-www-form-urlencoded数据var urlencodedParser = bodyParser.urlencoded({ extended: false });app.post('/',urlencodedParser,function(req,res){	res.send(req.body);});app.listen(8080);

  (2)、connect-multiparty

虽然connect-multiparty多用于文件上传,但也可以访问到post请求的数据,先安装

cnpm install connect-multiparty --save

  再引入和构建函数:

const multipart = require('connect-multiparty');var multipartMiddleware = multipart();```同样我们也采用req.body来获取参数:```app.post('/',multipartMiddleware,function(req,res){	res.send(req.body);});

  完整的:

const express=require("express");const multipart = require('connect-multiparty');var multipartMiddleware = multipart();var app=express();app.post('/',multipartMiddleware,function(req,res){	res.send(req.body);});app.listen(8080);

  相比于body-parser,代码量似乎更少一些,但我还是建议使用body-parser,根据官方说法,他会在服务器上创建临时文件,并且永远不会去清理它们,这会相当两会系统资源,所以不到万不得已请不要去使用它。

总结

post数据在网页开发时经常使用,请务必掌握它,只有这样网页的交互设计才能够做到游刃有余,今天就到这里,也希望大家以后多多支持。

  

转载于:https://www.cnblogs.com/lpxj-blog/p/10673441.html

你可能感兴趣的文章
同时执行多个$.getJSON() 出现数据混乱的问题的解决
查看>>
【Rollo的Python之路】Python 生成器
查看>>
linux之发送邮件--sendmail服务配置
查看>>
Java并发包中Lock的实现原理
查看>>
Java 流(Stream)、文件(File)和IO
查看>>
几道汇编入门题目(二)
查看>>
系统架构师学习笔记_第一章_连载
查看>>
好文推荐!帮大忙了
查看>>
Sublime text3 016 SublimeLinter(PHP 代码检测)
查看>>
Python补充02 Python小技巧
查看>>
个人项目制作(PSP)
查看>>
【转】完美解决iphone连电脑蓝牙出现bluetooth外围设备无法正确安装
查看>>
有关TabNavigation的方式【项目】
查看>>
C#设计模式-访问者模式
查看>>
CS round--36
查看>>
Microsoft patterns & practices 学习笔记(0)
查看>>
python之路_前端之HTML初始
查看>>
UML基础:统一建模语言简介
查看>>
Oozie安装的说明
查看>>
2 weekend110的SecureCRTPortable远程连接 + 上传安装jdk + 上传安装配置hadoop
查看>>