Я все еще пытаюсь обернуть голову в определенных случаях в REST, где использование ресурсов, определяемых имен вместо глаголов , менее интуитивно понятно, чем в простых случаях CRUD.
У меня есть ресурс " Update ", для обновлений / дополнений бэкэнда, с представлением Json следующим образом:
{
"id": 1,
"name": "Update Example",
"description": "demo update , adds handling of basic arduio type devices",
"version": "0.0.4",
"link":
{
"rel": "self",
"uri": "http://demo.org/updates/1",
"type: application/json"
},
}
EDIT :
Немного проясним ситуацию после ответа Даррела Миллера: ресурс коллекции «Обновления» уже существует и работает следующим образом:
- Внутренняя часть заполняет эту коллекцию на основе списка обновлений, извлеченных (посредством опроса) с внешнего сервера (который не использует rest, описания обновлений там минимальны, и чистого текста)
- Пользователь, использующий API, не может добавлять обновления, все, что он может сделать, это получить список обновлений и установить / удалить их
Теперь проблема в следующем:
Мне нужно найти правильный, спокойный способ установить обновления через API, и я нашел несколько способов сделать это, но все они кажутся мне "не совсем правильными":
1 - Добавьте ссылку на ресурс обновления, добавьте ресурс Installation и используйте hateoas
Добавьте это к обновлению:
"link":
{
"rel": "Installation",
"uri": "http://demo.org/updates/1/installation",
"type: "application/json"
}
Установка ресурс:
{
"installing": false,
"installProgress": 0,
"link":
{
"rel": "self",
"uri": "http://demo.org/updates/1/installation",
"type: "application/json"
}
}
Чтобы запустить процесс установки, пользователь затем POST до demo.org / updates / 1 / Installation , чтобы обновить "installing": false
до "installing": true
Кажется, это будет работать, но стоит ли добавлять «установку» как простой логический атрибут?
2- POST в uri, например demo.org / установки , чтобы добавить новый Установка ресурс
Тем самым запускается процесс установки, а также требуется добавить ссылку на обновление, загружаемое во вновь созданный Установка ресурс:
{
"installProgress": 0,
"link":
{
"rel": "update",
"uri": "http://demo.org/updates/1",
"type: application/json"
},
}
Хотя это может логически централизовать ресурс Установки в коллекции Установок, мой исходный рефлекс был бы УДАЛИТЬ элемент в этой коллекции, чтобы остановить его установку.
В этом случае, если экземпляр ресурса установки пропал, будет ли использование ссылки «установка» в обновлении заново создавать новый ресурс установки при каждом его «перемещении»?
В целом, не лучше ли было бы иметь атрибут " Установлено " в самом Обновлении , чтобы иметь смысл в целом?
Также, что если пользователь захочет приостановить что-то вроде установки?
Я рассмотрел множество из похожих вопросов в различных статьях и здесь о stackoverflow, но я до сих пор не совсем уверен, что лучший способ решать такие проблемы есть.
Кроме того, я знаю, что REST не относится к глаголам (кроме HTTP), но я все еще считаю, что это правильный вопрос.
Так что, пожалуйста, любые отзывы очень приветствуются!
Заранее спасибо.