Jak vytvořit obálku API pomocí proxy JavaScriptu

Právě jsem našel super chytrou podstatu od Davida Wellse, kterou stojí za to přidat do záložek.

David používá JavaScript Proxy k mapování vlastností objektu na fetch hovory.

Tento přístup funguje docela dobře pro dotazování RESTful API. apiObject.cars() mapuje na /cars/ a apiObject.cars('123') mapuje na /cars/123/ . 👏

// Found at https://gist.github.com/DavidWells/53518b3c12344952641dc81cc7599939
const createApi = (url) => {
  return new Proxy({}, {
    get(target, key) {
      return async function(id = "") {
        const response = await fetch(`${url}/${key}/${id}`)
        if (response.ok) {
          return response.json();
        }
        return Promise.resolve({ error: "Malformed Request" })
      }
    }
  })
}

let api = createApi("https://swapi.co/api")

// 'get' request to https://swapi.co/api/people
let people = await api.people()

// 'get' request to https://swapi.co/api/people/1
let person = await api.people(1)

Jaký skvělý malý trik! 💯