RESTful API дизайн кажется несколько субъективным, но я хотел бы получить некоторые отзывы о подходах, приведенных ниже, и о любых плюсах / минусах, которые у них есть. Прав ли один? все не так? Могут ли быть предоставлены оба (хотя это обеспечит частично дублирующуюся функциональность)?
GET отфильтрован по нескольким идентификаторам ...
Вот некоторые подходы, которые кажутся вполне нормальными (? F = просто иллюстрирует необязательное использование параметров фильтра / поиска):
GET /supplier/{supplierId}/products?f=...
GET /oem/{oemId}/products?f=...
Должно ли быть более 1 URL для получения продуктов? Кроме того, что, если я хотел бы фильтровать как по поставщику, так и по oem? Должен ли я просто иметь конечную точку / products и все это фильтр, или продукты должны быть доступны только от одного поставщика / oem, но не от обоих, или иметь все их вместе?:
GET /products?supplier={supplierId}&oem={oemId}&f=...
GET /supplier/{supplierId}/products?oem={oemId}&f=...
GET /oem/{oemId}/products?supplier={supplierId}&f=...
ПОЛУЧИТЬ дочернюю коллекцию без фильтрации по родительскому идентификатору ...
Вот подход, который кажется вполне нормальным:
GET /customers/{customerId}/addresses?f=...
Но что, если мне нужны заказы для ВСЕХ клиентов. Будет ли что-то из этого разумным?
GET /customers/addresses?f=...
GET /addresses?f=...
URL / customer / address (без {customerId}), по-видимому, имеет концептуальный смысл, но я не вижу схемы, используемой в документах по дизайну RESTful, которые я обнаружил (всегда присутствует {id}) , URL-адреса достаточно просты, но нарушают иерархию адресов клиентов.
Я полагаю, что это на самом деле не имеет большого значения, поскольку это имеет смысл для всех, кто использует API и является последовательным, но я хотел бы знать, как другие подошли к этим видам вопросы в «отраслевом стандарте». Спасибо.