send Content-Type: application / json post with node.js


115

Bagaimana kita bisa membuat permintaan HTTP seperti ini di NodeJS? Contoh atau modul dihargai.

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

Jawaban:


284

Modul permintaan Mikeal dapat melakukan ini dengan mudah:

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
Terima kasih atas jawaban yang membantu ini. Pada akhirnya saya menyadari bahwa opsi tersebut terdokumentasi dengan baik. Tapi tersesat di tengah banyak lainnya ...
yves Baumes

1
Itu tidak berhasil untuk saya sampai saya menambahkan headers: {'content-type' : 'application/json'},opsi.
Guilherme Sampaio

- modul 'request' NodeJs tidak digunakan lagi. - bagaimana kita melakukannya dengan menggunakan modul 'http'? Terima kasih.
Andrei Diaconescu

11

Contoh Sederhana

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

Seperti yang dikatakan dalam dokumentasi resmi :

body - badan entitas untuk permintaan PATCH, POST dan PUT. Harus berupa Buffer, String, atau ReadStream. Jika json benar, maka isi harus merupakan objek yang dapat diserialkan JSON.

Saat mengirim JSON, Anda hanya perlu memasukkannya ke dalam opsi.

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

4
Apakah hanya saya atau dokumentasinya saja yang menyebalkan?
Lucio

4

Untuk beberapa alasan, hanya ini yang berhasil untuk saya hari ini. Semua varian lainnya berakhir dengan kesalahan json buruk dari API.

Selain itu, varian lain untuk membuat permintaan POST yang diperlukan dengan muatan 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

Menggunakan permintaan dengan header dan postingan.

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

Karena requestmodul yang digunakan jawaban lain sudah tidak digunakan lagi, saya sarankan untuk beralih ke 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()
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.