Наилучшая практика для структуры конечных точек API REST? - PullRequest
0 голосов
/ 10 января 2020

Допустим, у вас есть эти ресурсы

/companies (apple, dell, samsung)
/productTypes (телефон, ноутбук, планшет)
/products (iPhone 6, Galaxy Tab S6, Dell XPS 15)

Какой хороший дизайн для API REST, если вы хотите, чтобы пользователь на внешнем интерфейсе мог набирать company & productType и видеть список подходящих продуктов?

  1. /products?productType={phone}&company={apple}
  2. /companies/apple/productType/phone/products
  3. /productType/phone/companies/apple/products
  4. Что-то еще?

Для меня # 1 кажется наиболее интуитивным и расширяемым, но когда я смотрю на большинство учебных пособий по API REST или API реального мира, мне кажется, что они чаще используют иерархическую структуру 2 или 3.

Например, с помощью API GitHub вы ПОЛУЧАЕТЕ все репозитории на /repositories, но вы получаете все репозитории для определенного пользователя или организации на /users/:username/repos или /orgs/:org/repos, вместо указания параметров запроса на /repositories

Почему это так часто встречается?

Кроме того, что мне следует делать, если мне нужна конечная точка, которая возвращает один последний выпущенный продукт для компании & productType ... может быть, это?
/products/latest?productType={phone}&company={apple}

...