Baudoin Michael
Baudoin Michael

Reputation: 101

Filter API response directly in URL

I would like to know if it is possible to filter the response of an API directly via the URL.

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

I only put 2 countries for the example but the structure of the answer is like this:

[
 {
  "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 "
 }
]

For the moment in my project I collect all the responses and I filter afterwards to have only the data for a country but to optimize performance I would like to filter the responses directly by 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)
    }
  }

I use React, here is my repository: https://github.com/michaelbaud/covid19, here is the rendering: https://suspicious-kilby-d90f99.netlify.com

Upvotes: 0

Views: 685

Answers (1)

Nader Zouaoui
Nader Zouaoui

Reputation: 43

You can use the following link instead:

https://coronavirus-19-api.herokuapp.com/countries/{country-name}

For example in your case it would be:

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

Italy : https://coronavirus-19-api.herokuapp.com/countries/italy

Good Luck

Upvotes: 1

Related Questions