gửi Content-Type: application / json post với node.js


115

Làm cách nào chúng ta có thể tạo một yêu cầu HTTP như thế này trong NodeJS? Ví dụ hoặc mô-đun được đánh giá cao.

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

Câu trả lời:


284

Mô-đun yêu cầu của Mikeal có thể thực hiện việc này một cách dễ dàng:

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.
  }
});

2
Cảm ơn bạn vì câu trả lời hữu ích này. Cuối cùng, tôi nhận ra rằng tùy chọn này đã được ghi chép đầy đủ. Nhưng mất ở giữa những người khác rất nhiều ...
Yves Baumes

1
Nó không hoạt động với tôi cho đến khi tôi thêm headers: {'content-type' : 'application/json'},tùy chọn.
Guilherme Sampaio

- mô-đun NodeJs 'request' không được dùng nữa. - làm thế nào chúng tôi sẽ làm điều này bằng cách sử dụng mô-đun 'http'? Cảm ơn bạn.
Andrei Diaconescu

11

Ví dụ đơn giản

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);  
}); 

10

Như tài liệu chính thức cho biết:

body - phần thân thực thể cho các yêu cầu PATCH, POST và PUT. Phải là Bộ đệm, Chuỗi hoặc Dòng đọc. Nếu json là true, thì nội dung phải là một đối tượng JSON-serializable.

Khi gửi JSON, bạn chỉ cần đặt nó vào phần nội dung của tùy chọn.

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

4
Là chỉ tôi hay tài liệu của nó tệ quá?
Lucio

4

Đối với một số lý do chỉ điều này làm việc cho tôi ngày hôm nay. Tất cả các biến thể khác đều gặp lỗi json xấu từ API.

Bên cạnh đó, một biến thể khác để tạo yêu cầu ĐĂNG bắt buộc với tải trọng JSON.

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


0

Sử dụng yêu cầu với tiêu đề và bài đăng.

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));
 })

0

requestmô-đun mà các câu trả lời khác sử dụng đã không được dùng nữa, tôi có thể đề xuất chuyển sang 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()
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.