Я разрабатываю простой REST API:
- * 1004 JSON *
- в основном CRUD-подобные операции
- POST для создания, PUT для обновления
Каждый ресурс идентифицируется уникальным дескриптором базы данных (на практике автоматическим приращением), который отображается через URI следующим образом:
/collection/131
Представление коллекции представляет собой список дочерних ресурсов, например:
{
"children": [
{ "name": "foo", "href": "/collection/131" }
]
}
поле «имя» должно быть уникальным во всей коллекции.
Я вполне доволен этим паттерном, кроме одного; чтобы найти ресурс с заданным именем, вы должны пройти через представление коллекции.
Как лучше всего добавить механизм «преобразования имени в URI» и при этом оставаться верным REST? Я вижу следующие варианты:
- введите имя в URI
- сделать коллекцию доступной для поиска
- какой-то механизм перенаправления или поиска
Причина, по которой я не хочу делать (1), заключается в том, что адресное пространство URI является не частью API, а деталями реализации. Единственный известный ресурс - это корневой ресурс, из которого можно найти все остальные ресурсы.
Как я могу упростить пользователям API преобразование имени в URI?