【问题标题】:Result is undefined when I use form-data in Postman当我在 Postman 中使用表单数据时,结果未定义
【发布时间】:2016-01-18 20:14:06
【问题描述】:

我可以使用 postman 插件中的 x-www-form-urlencoded 选项卡获取结果,但如果我想从 chrome 中的 postman 插件中的 form-data 选项卡获取结果。

var express = require('express');
var app = express();
var port = process.env.PORT || 3000;
var http = require('http').Server(app);
var bodyParser = require('body-parser');
var Random = require("random-js")();

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

app.post('/TransactionDelay', function(req, res) {

  var SecurityToken=req.body.SecurityToken;
  var SessionID=req.body.SessionID;
  var TimeStamp=Date.now();
  var SecretTransactionKey=req.body.SecretTransactionKey;
  var TransactionID=req.body.TransactionID;
  var BanksTransactionRefID=req.body.BanksTransactionRefID;
  var SessionRequestType=req.body.SessionRequestType;
  var StatusCode=req.body.StatusCode;
  var StatusDescription=req.body.StatusDescription;
  var tag=req.body.tag;

  var dataFile={"SecurityToken":SecurityToken,"SessionID":SessionID,"TimeStamp":TimeStamp,
  "SecretTransactionKey":SecretTransactionKey,"TransactionID":TransactionID,"BanksTransactionRefID":BanksTransactionRefID,
  "SessionRequestType":SessionRequestType,"StatusCode":StatusCode,"StatusDescription":StatusDescription,
  "Tag":tag};

  res.send('TimeStamp : '+dataFile.TimeStamp+'\nTransactionID : '+dataFile.TransactionID+'\nReplyId : 12993784\nStatusCode : '+dataFile.StatusCode+'\nStatusDescription : '+dataFile.StatusDescription+'\nTags :'+dataFile.Tag);

});

 function checkStatusCode(){
  var status=["Confirmed","Failed","Pending"];
  return status[Random.integer(0,2)];
 }
app.listen(port);
console.log('Server started! At http://localhost:' + port);

【问题讨论】:

    标签: node.js post postman form-data


    【解决方案1】:

    您使用的代码解析application/x-www-form-urlencoded,而发布的是multipart/form-data,通过邮递员中的表单数据选项卡

    使用强大 https://www.npmjs.com/package/formidable

    添加这个

    var formidable = require('formidable');
    var util = require('util');
    app.post('/TransactionDelay', function(req, res) {
        var form = new formidable.IncomingForm();
    
        form.parse(req, function(err, fields, files) {
            res.writeHead(200, {
                'content-type': 'text/plain'
            });
            res.write('received upload:\n\n');
            res.end(util.inspect({
                fields: fields,
                files: files
            }));
        });
    }
    

    这用于文件上传或者你有很多参数,在你的情况下它没有用

    简而言之,只需使用x-www-form-urlencoded 标签:D

    【讨论】:

    • 实际上我需要捕获一个请求并操纵它们并发送响应。
    • 将其与 supertest https://github.com/visionmedia/supertest 混合使用,但它缺乏良好的文档,但它是一个强大的模块
    猜你喜欢
    • 1970-01-01
    • 2016-10-11
    • 1970-01-01
    • 2023-03-14
    • 2019-07-26
    • 1970-01-01
    • 2019-11-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多