Есть чисто технический архитектурный вопрос. Мне интересно мнение большинства.
Контекст такой: есть ресурс в системе, который имеет несколько уникальных идентификаторов разного вида. Как правильнее описать REST интерфейс к нему?
Предположительно есть такие варианты:
1. Разбить получение объекта на два запроса:
первый - получить основной идентфикатор: /resources/ids?id-type={idType}&id-value={idValue}
основной идентификатор можно назначить из перечня всех
второй - получить по основному - ресурс: /resources/{id}
2. Сделать сложный ключ, из типа и значения идентификатора:
/resources/{idType}:{idValue}
3. Отойти от стандарта и явно включить тип идентификатора в контракт: /resources/{idType}/{idValue}
Сделать еще один, внутренний id, и поддерживать маппинг на внешние id-шники? Вообще, наличие "внутреннего" и "внешнего" айдишника - довольно частый подход даже в простых ситуациях, к примеру, uuid выставляется наружу, а в РСУБД - автоикремент.