найти ресурс по уникальному атрибуту - PullRequest
0 голосов
/ 28 ноября 2010

Я разрабатываю простой REST API:

  • * 1004 JSON *
  • в основном CRUD-подобные операции
  • POST для создания, PUT для обновления

Каждый ресурс идентифицируется уникальным дескриптором базы данных (на практике автоматическим приращением), который отображается через URI следующим образом:

 /collection/131

Представление коллекции представляет собой список дочерних ресурсов, например:

{
  "children": [
    { "name": "foo", "href": "/collection/131" }
  ]
}

поле «имя» должно быть уникальным во всей коллекции.

Я вполне доволен этим паттерном, кроме одного; чтобы найти ресурс с заданным именем, вы должны пройти через представление коллекции.

Как лучше всего добавить механизм «преобразования имени в URI» и при этом оставаться верным REST? Я вижу следующие варианты:

  1. введите имя в URI
  2. сделать коллекцию доступной для поиска
  3. какой-то механизм перенаправления или поиска

Причина, по которой я не хочу делать (1), заключается в том, что адресное пространство URI является не частью API, а деталями реализации. Единственный известный ресурс - это корневой ресурс, из которого можно найти все остальные ресурсы.

Как я могу упростить пользователям API преобразование имени в URI?

1 Ответ

1 голос
/ 28 ноября 2010

Это одна из проблем с REST.Методов HTTP почти не достаточно для поддержки обычных операций.

Некоторые могут возразить, что это неправильный способ REST для этого, но я не понимаю, как еще вы могли бы это сделать:

/collection/findByName?name=...

Редактировать: Вы также можете выбрать более общий метод, который вы можете в конечном итоге расширить:

/collection/search?name=...

/collection/search?name=...&something=...

Редактировать (2): А как насчет: /collection?name=...

Я верю, что в конечном итоге все сводится к тому, что вы считаете более интуитивным.

  • Кристиан
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...