Я бы хотел придерживаться
5. /searches/{search-id|search-name}
6. /searches/group/{groupname}/{search-name}
7. /searches/user/{username}/{search-name}
Проблема с резервным копированием может быть решена путем создания нового ресурса, который содержит ссылки на информацию Боба по всей системе, например,
GET /AccountData/Bob
<div class="AccountData">
<link rel="searches" href="/Searches/User/Bob"/>
<link rel="options" href="/Options/User/Bob"/>
<link rel="usagehistory" href="/History/User/Bob"/>
</div>
По моему опыту, вы сведете с ума, если попытаетесь создать единую иерархию, отвечающую всем вашим сценариям использования. Ты просто не можешь этого сделать. Вот почему вики работают так хорошо, что вместо доступа к информации они используют ссылки, а не иерархию.
Я бы предложил вам больше сосредоточиться на том, какие ссылки будут возвращаться в представлениях.
, например
GET /Groups/{GroupName}
<div class="group">
<div class="name">AGroup</div>
<link rel="searches" href="/Searches/Group/AGroup"/>
</div>
При таком подходе вы гораздо меньше заботитесь о том, как выглядит структура URL. Как говорит Рой здесь
REST API не должен определять фиксированный
Имена ресурсов или иерархии (
очевидная связь клиента и сервера)
Я понимаю, что это может показаться экстремальной позицией, учитывая, что все в SO кажутся зацикленными на том, как должны выглядеть ваши URL, чтобы иметь RESTful API, но чем больше вы об этом думаете, тем больше в этом смысла.
P.S. Пожалуйста, не зацикливайтесь на моем выборе HTML в качестве медиа-типа для представлений, я просто обращаю внимание на тот факт, что вам не всегда нужно использовать собственный словарь XML.