Фильтровать ответ API напрямую в URL - PullRequest
0 голосов
/ 31 марта 2020

Я хотел бы знать, возможно ли фильтровать ответ API напрямую через URL.

URL API: https://coronavirus-19-api.herokuapp.com/countries

Я только Для примера приведем 2 страны, но структура ответа выглядит следующим образом:

[
 {
  "country":"USA",
  "cases":176518,
  "todayCases":12730,
  "deaths":3431,
  "todayDeaths":290,
  "recovered":6241,
  "active":166846,
  "critical":3893,
  "casesPerOneMillion":533,
  "deathsPerOneMillion":10,
  "firstCase":"\nJan 20 "
 },
 {
  "country":"Italy",
  "cases":105792,
  "todayCases":4053,
  "deaths":12428,
  "todayDeaths":837,
  "recovered":15729,
  "active":77635,
  "critical":4023,
  "casesPerOneMillion":1750,
  "deathsPerOneMillion":206,
  "firstCase":"\nJan 29 "
 }
]

На данный момент в моем проекте я собираю все ответы и фильтрую впоследствии, чтобы получить только данные для страны, но для оптимизировать производительность Я хотел бы отфильтровать ответы непосредственно по URL.

async getCountryStats() {
    try {
      let response = await fetch("https://coronavirus-19-api.herokuapp.com/countries")
      if (response.status === 200) {
        let data = await response.json()

        // Data object with ID
        data = Object.assign({}, data)

        // Data object with name of property
        let obj = {}
        for (let i in data) {
          obj = { ...obj, [data[i].country]: data[i] }
        }

        this.setState({ focusStats: obj[this.state.focusCountry] })

      } else {
        this.setState({ errorStatus: true })
        console.error('Error status')
      }

    } catch (err) {
      console.error(err)
    }
  }

Я использую React, вот мой репозиторий: https://github.com/michaelbaud/covid19, вот рендеринг: https://suspicious-kilby-d90f99.netlify.com

1 Ответ

1 голос
/ 31 марта 2020

Вместо этого вы можете использовать следующую ссылку:

https://coronavirus-19-api.herokuapp.com/countries/ {название страны}

Например, в вашем случае это будет:

США: https://coronavirus-19-api.herokuapp.com/countries/USA

Италия: https://coronavirus-19-api.herokuapp.com/countries/italy

Удачи

...