`
JerryWang_SAP
  • 浏览: 1026146 次
  • 性别: Icon_minigender_1
  • 来自: 成都
文章分类
社区版块
存档分类
最新评论

nodejs request module里的json参数的一个坑

阅读更多

今天工作的时候遇到一个坑,在客户端用nodejs给服务器发送HTTP请求,服务器老是报错:In the context of Data Services an unknown internal server error occurred

 

经过服务器端调试发现,服务器根本就没有正确解析出这个请求的content-type。在postman里能工作的场景下,正确解析出的content-type是multipart/mixed:

 

而我的nodejs代码里明明指定了这个content-type的啊?

 

经过一行行代码分析,最后发现问题出在第63行的json字段的值。我错误的赋成了true。

 

这个参数起什么作用?调试一下就知道了。如果为true,进入第403行。

 
 
 

如果请求内部有entity的content-type不是application/x-www-form-urlencoded, 则进入第1293行。

 

safeStringify的实现逻辑就是浏览器原生的JSON.stringify, 把应用程序传入的json对象序列化成字符串。但是我的代码里,传入request module的请求体是一个字符串,而json参数设的又是true,所以逻辑上就不对了。把这个json参数的值改为false后,一切正常。

 
 
 

要获取更多Jerry的原创文章,请关注公众号"汪子熙":

 

 
0
0
分享到:
评论

相关推荐

    nodejs手册中文版

    这会生成一个`package.json`文件,用来管理项目依赖和配置信息。 3. **安装依赖**:Node.js的包管理器npm(Node Package Manager)可以帮助你安装第三方库。例如,要安装Express框架,只需在项目根目录下运行`npm ...

    nodejs教程(alsotang)

    2. 请求和响应对象:每个请求都会触发一个 'request' 事件,携带 request 和 response 对象。request 对象包含客户端发送的信息,response 对象则用于向客户端发送响应。 四、Node.js 中的模块 1. CommonJS 模块...

    zoom-api-jwt:示例NodeJS应用程序使用Json Web令牌(JWT)调用Zoom的API

    request-promise:提供一种使用.then()方法请求调用对象的方法。 express:Node.js的Web应用程序框架。 要将这些依赖项安装在项目目录中, npm-install <module>在终端中键入npm-install <module> 。快速开始要...

    nodejs基础入门及配置方法

    2. **创建第一个 Node.js 应用:** - 创建一个名为 `hello.js` 的文件。 - 使用以下代码: ```javascript console.log('Hello World!'); ``` - 在命令行中运行:`node hello.js` #### Node.js 模块系统 1. *...

    Node.js中的http请求客户端示例(request client)

    `request`函数接受URL作为第一个参数,回调函数作为第二个参数。回调函数的参数中,`error`表示请求过程中可能出现的错误,`response`是响应对象,`body`是响应体。 然而,`request`模块由于其丰富的功能和较多的第...

    使用nodejs的koa框架连接MongoDB数据库.zip

    MongoDB则是一种流行的NoSQL数据库,以JSON格式的文档存储数据,广泛用于非结构化数据的管理。本教程将详细讲解如何使用Koa框架来连接和操作MongoDB数据库。 ### 1. 安装必要的库 首先,我们需要安装`koa`和`...

    nodejs中软学习配套源码

    例如,HTTP服务器就是一个事件发射器,当接收到请求时会触发`request`事件。 4. **文件系统(File System)操作**:`fs`模块提供了读写文件、创建、删除目录等操作。例如,使用`fs.readFile()`异步读取文件,`fs....

    nodejs-website-pinger:一个简单的NodeJS网站测试器,用于记录响应时间和可用性

    `nodejs-website-pinger` 是一个利用 Node.js 的项目,其目标是创建一个简单的网站测试工具,用于监测网站的响应时间和可用性。这个工具对于 web 开发者、运维人员或者任何关心网站性能的人来说,都具有很高的实用...

    nodejs环境使用Typeorm连接查询Oracle数据

    此外,还需要一个`ormconfig.json`文件来存储数据库连接参数,如: ```json { "type": "oracle", "host": "10.16.2.41", "port": 1521, "username": "admin", "password": "admin", "sid": "ORCL", ...

    nodejs 日志模块winston的使用方法

    例如,我们可以使用以下代码来记录一个简单的info级别的日志: ```javascript const winston = require('winston'); const logger = winston.createLogger({ level: 'info', format: ***bine( winston.format....

    nodeJS基础补充

    当一个操作(如读取文件或接收网络请求)完成时,它会触发一个事件,程序通过监听这些事件来处理任务。这使得Node.js可以同时处理多个请求,而不会阻塞其他操作,提高了系统的并发能力。 2. **非阻塞I/O**: 在...

    nodejs-travis

    标题 "nodejs-travis" 指的是一个使用 Node.js 并结合 Travis CI 的项目。这个项目可能是为了演示如何在 Node.js 应用程序中设置和使用 Travis CI,以便实现持续集成。下面将详细解释这两个概念以及它们的结合。 **...

    nodejs实例解析(输出hello world)

    该函数接收一个回调函数作为参数,此回调函数又称为requestListener(请求监听器),它会在有请求到达时被调用。 2. requestListener:这是http.createServer的回调函数,它的两个参数分别是request(请求对象)和...

    nodejs-weather-app:这是HTTP请求的NodeJS练习项目

    标题中的“nodejs-weather-app”表明这是一个使用Node.js开发的天气查询应用程序,而描述进一步确认了这是一项针对HTTP请求的实践练习。Node.js是一个基于Chrome V8引擎的JavaScript运行环境,它允许开发者使用...

    hello-nodejs

    标题“hello-nodejs”暗示了这是一个关于使用Node.js开发的项目,很可能是初学者入门教程或者简单的示例代码。Node.js是一个基于Chrome V8引擎的JavaScript运行环境,它允许开发者在服务器端使用JavaScript进行编程...

    nodejs-api

    错误处理在 Node.js 中至关重要,通常通过回调函数中的第一个参数来传递错误对象,或者使用 try-catch 语句捕获异常。 14. **性能优化** 为了优化 Node.js 应用,可以使用日志记录、性能监控工具,以及优化代码...

    js代码-nodejs测试呢

    在JavaScript的世界里,Node.js是一个不可或缺的组成部分,它让JavaScript得以在服务器端运行,从而打破了JavaScript只能在浏览器中运行的传统。本主题将深入探讨“js代码-nodejs测试呢”这一话题,结合`main.js`和`...

    nodejs-homework

    例如,你可以创建一个名为`mathUtils.js`的模块,里面包含一些数学函数,然后在其他文件中导入并使用这些函数。 2. **文件系统(fs)**:Node.js提供了一套强大的文件系统API,允许开发者读写文件、创建目录、删除...

    nodejs-express-boilerplate:我在项目中使用的简单Node.js样板

    总结来说,"nodejs-express-boilerplate"是一个帮助开发者快速搭建Node.js Web应用的基础模板,包含了Express框架的基本结构和示例代码,便于理解和学习。通过这个项目,开发者可以深入理解Node.js和Express的工作...

    NodeJS实现阿里大鱼短信通知发送

    首先定义你的淘宝应用的AppKey和AppSecret,然后编写一个名为`dySign`的函数,该函数将接收一个包含所需参数的对象,并生成签名。这里的关键步骤包括: 1. 生成当前时间的时间戳。 2. 按照参数名的字母顺序对参数...

Global site tag (gtag.js) - Google Analytics