Send Content-Type: application/json post with node.js 发送内容类型:

我们如何在 NodeJS 中实现这样的 HTTP 请求。

curl https://www.googleapis.com/urlshortener/v1/url \
-H 'Content-Type: application/json' \
-d '{"longUrl": "http://www.google.com/"}'
178183 次浏览

Mikeal 的请求 模块可以很容易地做到这一点:

var request = require('request');


var options = {
uri: 'https://www.googleapis.com/urlshortener/v1/url',
method: 'POST',
json: {
"longUrl": "http://www.google.com/"
}
};


request(options, function (error, response, body) {
if (!error && response.statusCode == 200) {
console.log(body.id) // Print the shortened url.
}
});

举个简单的例子

var request = require('request');


//Custom Header pass
var headersOpt = {
"content-type": "application/json",
};
request(
{
method:'post',
url:'https://www.googleapis.com/urlshortener/v1/url',
form: {name:'hello',age:25},
headers: headersOpt,
json: true,
}, function (error, response, body) {
//Print the Response
console.log(body);
});

As the official documentation says:

Body-tity body 用于 PATCH、 POST 和 PUT 请求。必须是缓冲区、字符串或 ReadStream。如果 json 为 true,那么 body 必须是可 JSON 序列化的对象。

当发送 JSON 时,您只需要将它放在选项的主体中。

var options = {
uri: 'https://myurl.com',
method: 'POST',
json: true,
body: {'my_date' : 'json'}
}
request(options, myCallback)

由于某种原因,今天只有这个对我有用。所有其他的变体都出现在来自 API 的 坏 Json错误中。

Besides, yet another variant for creating required POST request with JSON payload.

request.post({
uri: 'https://www.googleapis.com/urlshortener/v1/url',
headers: {'Content-Type': 'application/json'},
body: JSON.stringify({"longUrl": "http://www.google.com/"})
});

使用带有标题和文章的请求。

var options = {
headers: {
'Authorization': 'AccessKey ' + token,
'Content-Type' : 'application/json'
},
uri: 'https://myurl.com/param' + value',
method: 'POST',
json: {'key':'value'}
};
      

request(options, function (err, httpResponse, body) {
if (err){
console.log("Hubo un error", JSON.stringify(err));
}
//res.status(200).send("Correcto" + JSON.stringify(body));
})

由于其他答案所使用的 request模块已被废弃,我建议切换到 node-fetch:

const fetch = require("node-fetch")


const url = "https://www.googleapis.com/urlshortener/v1/url"
const payload = { longUrl: "http://www.google.com/" }


const res = await fetch(url, {
method: "post",
body: JSON.stringify(payload),
headers: { "Content-Type": "application/json" },
})


const { id } = await res.json()