Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/37.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js 如何用膝关节炎进行表单数据请求? 我试图通过膝关节炎复制一个登录表单的行为。_Node.js_Multipartform Data_Koa - Fatal编程技术网

Node.js 如何用膝关节炎进行表单数据请求? 我试图通过膝关节炎复制一个登录表单的行为。

Node.js 如何用膝关节炎进行表单数据请求? 我试图通过膝关节炎复制一个登录表单的行为。,node.js,multipartform-data,koa,Node.js,Multipartform Data,Koa,登录表单包括: 我正在使用和模块: 但我总是得到400的回复 我尝试过使用form.submit(DB_SERVER\u URL+'auth',function(err,res){…}这一功能,但我喜欢koa的yield功能,理想情况下我希望避免处理回调 有什么想法吗?我最终使用了表单.submit(DB_SERVER_URL+'auth',function(err,res){…},但是包装了回调,这样我就可以使用yield来维护同步控制流 这是我对表单回调的包装。提交以接收响应: funct

登录表单包括:

我正在使用和模块:

但我总是得到400的回复

我尝试过使用
form.submit(DB_SERVER\u URL+'auth',function(err,res){…}
这一功能,但我喜欢koa的yield功能,理想情况下我希望避免处理回调


有什么想法吗?

我最终使用了
表单.submit(DB_SERVER_URL+'auth',function(err,res){…}
,但是包装了回调,这样我就可以使用
yield
来维护同步控制流

这是我对
表单回调的包装。提交
以接收响应:

function makeLoginRequest(formData) {

    var form = new FormData();
    form.append('identification', formData.identification);
    form.append('password', formData.password);
    var DB_SERVER_URL = 'http://myurl:3000/';

    return function(callback) {
        form.submit(DB_SERVER_URL + 'auth', function(error, response) {
            callback(error, response);
        });
    }
}
下面是我用于接收响应主体的回调的包装:

function getLoginResponseData(response) {

    return function(callback) {
        response.on("data", function(chunk) {
            callback(null, chunk);
        }); 
    }
}
这使我可以使用
yield
来维护同步控制流:

var response = yield makeLoginRequest(this.request.body);
console.log('response.statusCode: ' + response.statusCode);

var chunk = yield getLoginResponseData(response);
console.log("BODY: " + chunk);

膝关节炎,膝关节炎,初学者,请您告知我!

KOA接受多个屈服输入,根据您当前的设置,可以或多或少容易地从当前代码中获得:
  • 承诺。由于表单数据似乎没有使用它们,我们将使用

  • 或者一个thunk,一个您在回答中使用的包装函数,但是有一些库可以为您处理包装(这里,):


如果您使用koa请求,我可以这样做

const request = require('koa-request');

const response = yield request({
 method: 'POST',
    url: 'https://whatsever.com',
    form: {
     itema: 'vala',
     itemb: 'valb',
    },
    headers: {
      'Content-type': 'application/x-www-form-urlencoded'
    }
  });

this.body = response.body;
如果需要多部分,请查看此处:


请记住,
koa请求
包装了
request
模块

太棒了,我在表单提交中使用了Q。我对
响应有问题。on(“数据”,回调)
因为回调没有提供错误。知道我该如何使用Q或thunkify吗?thunkify wrap可以处理事件,比如
var-evnts=thunkify.event(响应,'data');var-data=yield-evnts()
所以我在想,嘿,OP真的想做和我一样的事,酷……然后我读到了你的名字。哈哈,机会有多大:)
var Q = require('q');

var promise = Q.ninvoke(form, "submit", DB_SERVER_URL + 'auth');
var response = yield promise;
console.log('response.statusCode: ' + response.statusCode);
var thunkify = require('thunkify-wrap');

var submit = thunkify(form.submit, form); // the context is needed in this case
var response = yield submit(DB_SERVER_URL + 'auth');
console.log('response.statusCode: ' + response.statusCode);
const request = require('koa-request');

const response = yield request({
 method: 'POST',
    url: 'https://whatsever.com',
    form: {
     itema: 'vala',
     itemb: 'valb',
    },
    headers: {
      'Content-type': 'application/x-www-form-urlencoded'
    }
  });

this.body = response.body;