Структура маршрута RESTful для FindFirstByAttribute - PullRequest
0 голосов
/ 12 мая 2018

Разработка REST API для элемента ресурса, который имеет свой идентификатор, а также имеет неуникальный ссылочный номер.Один из наиболее типичных запросов этого API будет выглядеть примерно так:

FindFirstByReference(referenceNumber)
FindLastByReference(referenceNumber)

Каждый из них возвращает один элемент, а не массив из одного элемента.

Я думаю, как это лучше всего сделатьперевести в REST.

(1) Первый вариант - перечислить все элементы, отфильтрованные по ссылке и с дополнительным атрибутом return_one (который может быть first или last изсписок)

GET /items?reference=123&return_one=first

Проблема этого подхода в том, что изменение формы ответа из-за наличия или отсутствия атрибута return_one кажется неправильным.

(2) Второй вариант - выбрать подресурс массива элементов, возвращаемый запросом.

GET /items?reference=123/first

(3) Третий вариант - использовать ссылочный атрибут в качестве идентификатора, чтобывыберите только один.

GET /items/reference=123&return_one=first

Это может сбивать с толку, поскольку разница между (1) и (3) составляет всего один символ.

Кажется ли, что какой-либо из этих параметров работает нормально?Есть ли другой вариант, который я должен рассмотреть?Спасибо.

1 Ответ

0 голосов
/ 12 мая 2018

Лучше не иметь API, который может выдавать список или отдельный объект.В вашем случае это может быть /items, чтобы получить список ресурсов предметов.Принимая во внимание, что если вы хотите ограничить его одним ресурсом или ограниченным числом, это можно сделать с помощью параметра limit.Таким образом, это будет массив элементов, даже если предел равен 1, так что однородность сохраняется.Также вы можете применить другой параметр запроса sort_by, используя который вы можете сортировать по любым полям.

Sample /items?limit=1&sort_by=+id

Примечание: для sort_by вы можете определить + для возрастания и - дляпо убыванию

...