Я бы рекомендовал разделить здесь две проблемы: 1) моделирование хранилища данных;и 2) проектирование доступа RESTful.Когда разработка только начинается, эти две проблемы всегда идут рука об руку.По мере развития проекта вам может потребоваться спроектировать совокупные точки или просто разные точки зрения для хранилища.Всегда хорошо понимать, что понятия похожи только на поверхности.
Что касается ваших 7 вопросов, то сначала вам нужно решить, полностью ли заменима концепция «документа» концепцией «экземпляр документа ".Например, если красный шар имеет идентификатор 1, тогда допустимы следующие два ресурса?
/documents/1
/balls/1
Можете ли вы ПОСТАВИТЬ новый шар в оба из следующих ресурсов или только один?
/documents/
/balls/
Можете ли вы найти все зеленые шары по одному или нескольким ресурсам?
/documents/type/ball/by/color/green
/balls/by/color/green
Важно ответить на эти вопросы, чтобы ваш API был однозначным.
Во-вторых, вам нужнорешите, как "SEO-дружественный" вы хотите, чтобы ваш ресурс выглядел.Например:
1. /documents/after-date/2001-01-01/
2. /documents/before-date/2010-12-31/
3. /documents/after-date/2001-01-01/before-date/2010-12-31/
7. /balls/by/color/green
or
1. /documents?after-date=2001-01-01
2. /documents?before-date=2010-12-31
3. /documents?after-date=2001-01-01&before-date=2010-12-31
7. /balls?color=green
Это «проблема», если ваш API широко открыт и используется для получения ссылок на общедоступном веб-сайте.Причина, по которой я помещаю слова «SEO-friendly» и «беспокойство» в кавычки, заключается в том, что эксперты по SEO все еще не согласны с тем, предпочитают ли поисковые системы тем или иным способом или вообще не интересуются.
Отс точки зрения реализации, проще, быстрее и масштабируемее использовать параметры URL.Но если вы не ожидаете сумасшедшего количества комбинаций, то оба подхода будут работать одинаково хорошо.
Из личного опыта я бы также рекомендовал группировать ресурсы поискового типа (в отличие от ресурсов идентификации) по общему пути.,Например:
7. /balls/search?color=green
instead of
7. /balls?color=green
Удачи в дизайне.Нет единственного правильного пути, когда дело доходит до ОТДЫХА.Пока это имеет смысл - ты на правильном пути.