Я новичок в веб-разработке на стороне сервера, и недавно я много читал о внедрении API RESTful. Один из аспектов REST API, который я все еще придерживаюсь, заключается в том, как организовать структурирование иерархии URI, которая идентифицирует ресурсы, с которыми клиент может взаимодействовать. В частности, я застрял в решении, как подробно сделать иерархию и что делать, если ресурсы состоят из других типов ресурсов.
Вот пример, который, надеюсь, покажет, что я имею в виду. Представьте, что у нас есть веб-сервис, который позволяет пользователям покупать продукты у других пользователей. Таким образом, в этом простом случае есть два ресурса верхнего уровня пользователей и продукты. Вот как я начал структурировать иерархию URI,
Для пользователей:
/users
/{id}
/location
/about
/name
/seller_rating
/bought
/sold
Для продуктов:
/products
/{id}
/name
/category
/description
/keywords
/buyer
/seller
В обоих случаях объекты в каждой иерархии ссылаются на подмножество объектов в другой иерархии. Например, /users/{id}/bought
- это список продуктов, которые купил пользователь, который является подмножеством /products
. Кроме того, /products/{id}/seller
ссылается на пользователя, продающего определенный продукт.
Поскольку эти URI ссылаются на другие объекты или подмножества других объектов, API должен поддерживать такие вещи: /users/{id}/bought/id/description
и /products/{id}/buyer/location
? Потому что, если поддерживаются эти типы URI, что бы остановить что-то вроде этого /users/{id}/bought/{id}/buyer/bought/{id}/seller/name
или что-то столь же запутанное? Кроме того, в этом случае, как бы вы обрабатывали маршрутизацию, так как маршрутизатор на сервере должен был интерпретировать URI произвольной длины?