Express post请求无法解析参数的原因

router.post(‘/‘, function(req, res) {
    console.log(req.body);
    console.log(req.body.name);
    console.log(req.body.tel);
    res.send("ok");
});

// 下面是log
{}
undefined
undefined

原因:因为post的是一个raw的字符串,Express默认只支持json与x-www-form-urlencoded

解决方法:使用json对象与后台进行交互

知识点传送门:https://www.jianshu.com/p/606802e40fd5

原文地址:https://www.cnblogs.com/sangzs/p/8708575.html

时间: 2024-11-13 10:07:53

Express post请求无法解析参数的原因的相关文章

body-parser Node.js(Express) HTTP请求体解析中间件

body-parser Node.js(Express) HTTP请求体解析中间件 2016年06月08日     781     声明 在HTTP请求中,POST.PUT和PATCH三种请求方法中包含请求体,Node.js 原生HTTP模块中,请求体要基于流的方式接收和解析.body-parser是一个HTTP请求体解析中间件,使用这个模块可以解析JSON.Raw.文本.URL-encoded格式的请求体,Express框架中就是使用这个模块做为请求体解析中间件. 请求体解析 1.1 原生环境

Web APi之捕获请求原始内容的实现方法以及接受POST请求多个参数多种解决方案(十四)

前言 我们知道在Web APi中捕获原始请求的内容是肯定是很容易的,但是这句话并不是完全正确,前面我们是不是讨论过,在Web APi中,如果对于字符串发出非Get请求我们则会出错,为何?因为Web APi对于简单的值不能很好的映射.之前我们谈论过请求内容注意事项问题,本节我们将更加深入的来讨论这个问题,我们会循序渐进进行探讨,并给出可行的解决方案,.细细品,定让你收货多多! 捕获请求原始内容实现方法 捕获复杂属性值 Web APi对于复杂属性值以JSON或者XML的形式成功发送到服务器,基于这点

Mock.JS拦截HTTP请求实例解析-JS笔记

MockJS是一种比较通用的前端模拟HTTP请求及回复的工具,能够仿真处各类HTTP的请求及返回结果.实现在无后端的情况下,前端对于后端接口的仿真.Mock的基础使用也是比较简单,本文我们主要和大家分享Mock.JS拦截HTTP请求实例解析,希望能帮助到大家. 但,在引入MockJS时,import Mock from 'mockjs'会拦截所有前端发出的HTTP请求,无论是否使用Mock.mock开启Mock仿真,都会拦截HTTP请求. 这也就是为何,就算不Mock.mock也会后端无法获取前

使用getopt_long来解析参数的小函数模板

getopt_long原型 #define no_argument 0 #define required_argument 1 #define optional_argument 2 struct option { const char *name; //名称,下面实例中使用的--help,--version int has_arg; //是否有参数,可选0,1,2三个值,就是上面的那三个宏定义 int *flag; //返回值,传入的一个int指针,表示该参数的解析结果,如果是NULL,那么返

(二)Asp.net web api中的坑-【http get请求中的参数】

webapi主要的用途就是把[指定的参数]传进[api后台],api接收到参数,进行[相应的业务逻辑处理],[返回结果].所以怎么传参,或者通俗的说,http请求应该怎么请求api,api后台应该怎么写,才能准确的接收到参数. HttpGet 请求 1.get请求,单参数 前端ajax var url = 'api/EnterOrExit/test';       var para = {};       para["Phone"] = "phone13880825221&q

ios 解决数据请求json解析字典后,由于java某些类库转换json字符串后出现键值为<null>无法保存在userDefault的问题

解决数据请求json解析字典后,由于java某些类库转换json字符串后出现键值为<null>无法保存在userDefault. 打印下得到的字典数据: “username”=<null> 此时如果将字典保存到userDefault中会报错 所以需要遍历字典将其替换 for (NSString*s in [Dict1 allKeys]) { if ([Dict1[s] isEqual:[NSNull null]]) { [Dict1 setObject:@""

(三)Asp.net web api中的坑-【http post请求中的参数】

接上篇, HttpPost 请求 1.post请求,单参数 前端 var url = 'api/EnterOrExit/GetData2'; var para = {}; para["Phone"] = "phone13880825221"; para["UID"] = "uid287572292"; $.post(url, para, function () { }, "application/json"

为每个请求链接加上参数paramId

代码: //  /**   * 为每个请求链接加上参数paramId   * 注释:只有GET方法可在链接后使用?paramId=adfa_232,POST不可以   */   HttpServletRequest request=(HttpServletRequest) servletrequest;    HttpServletResponse response=(HttpServletResponse) servletresponse;       //获取上一步的请求链接   Strin

如何使用getopt()函数解析参数

最近在写程序的过程中,把一部分时间都花费在程序对参数的处理上.今天听了学长说到getopt函数,才发现原来c里面还有一个专门解决参数处理的函数,查询了相关资料,这里简单总结一下. 使用int main( int argc, char *argv[] )(或int main( int argc, char **argv ))时,系统将把用户输入的参数通过argc和argv引入程序中,argc为参数的个数,argv是指向参数的指针数组,其中第一个参数为自身程序文件名. 这里我们使用getopt()