надіслати Тип вмісту: публікація програми / json з node.js


115

Як ми можемо зробити такий HTTP-запит у NodeJS? Приклад або модуль оцінено

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

Відповіді:


284

Модуль запиту 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.
  }
});

2
Дякую за корисну відповідь. Зрештою я розумію, що варіант добре задокументований. Але програли в середині безлічі інших ...
Ів Баумес

1
Це не працювало для мене, поки я не додав headers: {'content-type' : 'application/json'},варіант.
Сампайо

- модуль запиту NodeJs застарілий. - як би ми це зробили за допомогою модуля "http"? Дякую.
Андрій Діаконеску

11

Простий приклад

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

Як говориться в офіційній документації :

body - орган об'єкта для запитів PATCH, POST та PUT. Повинно бути буфером, рядком або ReadStream. Якщо json вірно, то тіло повинно бути об'єктом, що може бути серіалізаційним JSON.

При надсиланні JSON вам просто потрібно ввести його в тій частині опції.

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

4
Це тільки я або її документація відстій?
Лусіо

4

Чомусь тільки це працювало для мене сьогодні. Усі інші варіанти виявилися помилковими помилками json від API.

Крім того, ще один варіант створення необхідного POST-запиту з корисним навантаженням 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

Використання запиту із заголовками та публікацією.

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

Оскільки 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()
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.