将curl -F请求转换为nodejs请求

时间:2017-05-17 17:51:26

标签: json node.js curl

我有这条卷曲卷,它工作正常:

curl -X POST -F document=@name_of_document_with_json_inside.txt http://some_url/json/name?signature=bd87b1e4b679092a6946de0c6f623567

我想更改此内容并使用nodejs

发布我的json文档

我目前的代码是:

var request = require('request');
var postData = { id: "12345", title: "Some title", url: "some-url" };
var clientServerOptions = {
  uri: 'http://some_url/json/name?signature=bd87b1e4b679092a6946de0c6f623567',
  body: postData,
  json: true,
  method: 'POST',
  headers: {
    'Content-Type': 'application/json'
  }
}

request(clientServerOptions, function (error, response) {
  console.log(error,response.body);
  return;
});

从curl帮助我得到了-F用于表单,在我的卷曲中我有一个发布字段文档的命令:

-F/--form <name=content> Specify HTTP multipart POST data (H)

任何人都可以帮我解释如何指定文档字段并在其中发布我的json数据吗?

更新

postData包含:

{ id: "12345", title: "Some title", url: "some-url" }

这是name_of_document_with_json_inside.txt中的数据

有人告诉我,我需要这样做,比如发布带有name = document:

的textarea
<textarea name="document">JSON BLA BLA BLA</textarea>

那么如何指定document =?

1 个答案:

答案 0 :(得分:0)

这篇文章帮助了我:http://stackoverflow.com/questions/19818918/nodejs-sending-uploading-a-local-file-to-a-remote-server

var POST_DATA = 'data={['已更改为:var POST_DATA = 'document={['

我甚至不必写文件并发布postData json代码

以下是完整的工作代码:

var http = require('http');
var postData = { id: "12345", title: "Some title", url: "some-url" };
var post_options = {
    //host: 'logger.mysite.co.uk',
    host: 'some_url',
    path: '/json/name?signature=bd87b1e4b679092a6946de0c6f623567',
    port: 80,
    timeout: 120000,
    method: 'POST',
}

var sender = http.request(post_options, function(res) {
    if (res.statusCode < 399) {
        var text = ""
        res.on('data', function(chunk) {
            text += chunk
        })
        res.on('end', function(data) {
            console.log(text);
        })
    } else {
        console.log("ERROR", res.statusCode)
    }
});

var POST_DATA = 'document='
POST_DATA += postData
POST_DATA += ''
sender.write(POST_DATA);
sender.end();