Необходимо вызвать несколько API в последовательном порядке, один за другим в javascript - PullRequest
0 голосов
/ 13 июля 2020

Мне нужно вызвать несколько API в последовательном порядке один за другим в javascript. Ответ одного, возможно, потребуется в качестве входных данных для другого. Может кто-нибудь предложить или дать образец кода.

Я пытался использовать api .fetch (), но мне было трудно передать ответ одного api другому.

Ответы [ 2 ]

2 голосов
/ 13 июля 2020

Используя promises, которые изначально возвращаются fetch api, несколько запросов могут быть связаны один за другим

var result = fetch('api/url1') // First request
    .then(function (response) {
        return response.json();
    })
    .then(function (data) {
        var secondId = data.someId
        return fetch('api/url2' + secondId); // Second request
    })
    .then(function (response) {
        return response.json();
    })
    .then(function (data) {
        var thirdId = data.someId
        return fetch('api/url3' + thirdId); // Third request
    })
    .then(function (response) {
        return response.json();
    })
    .then(function (data) {
        // Response of third API
    })
    .catch(function (error) {
        console.log('Error', error)
    })
0 голосов
/ 13 июля 2020

Хотя ответ был принят, попробуйте async await вот так.

(async () => {
  // first
  const res = await fetch("https://reqres.in/api/users/1");
  const result1 = await res.json();
  
  console.log("Result 1", result1);
  
  // some logic ...
  
  // second 
  const res2 = await fetch("https://reqres.in/api/users/2");
  const result2 = await res2.json();
  
  console.log("Result 2", result2);
  // ... so on ...
})();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...