RESTful url - получение новой субтитры
Есть 2 модели: сущность и сущность. Сущность может иметь много связанных Субъектов (отношение один: много).
На сервере есть метод, который возвращает новый Subentity (назовем его GetEmptySubentity). Дело в том, что когда вы хотите создать новый Subentity, вы нажимаете кнопку, и модель приходит с сервера с некоторыми предварительно заполненными полями. Некоторые из этих предварительно заполненных значений Subentity зависят от соответствующего объекта, поэтому мне нужно передать идентификатор объекта в этом запросе.
Так должен ли правильный URL-адрес получить пустую Subentity такой, как / Entity / {id} / Subentity / empty? Или я что-то не так понимаю?
1 ответ
Да, вы. В соответствии с единообразным интерфейсом / ограничением hateoas вы должны отправлять гиперссылки своим клиентам REST, и они должны использовать API, следуя этим гиперссылкам. Для этого вам понадобится гипермедиа формат, например, HTML, ATOM+XML, HAL+JSON, LD+JSON & Hydra и т. Д. (Используйте Google). Таким образом, с помощью HTML результат должен содержать HTML-форму с полями ввода, имеющими значения по умолчанию и т. Д. Вы должны добавить семантику к этому с помощью RDFa и, таким образом, обрабатывая HTML, ваш REST-клиент будет знать, что ссылка о создании нового ресурс. Ofc легче анализировать другие форматы гипермедиа. С их помощью вы можете использовать ту же концепцию с RDF (например, JSON-LD или ATOM), или вы можете использовать отношения ссылок с типами MIME, специфичными для поставщика (например, HAL или ATOM), или ваше собственное решение, которое описывает эти поля ввода., Таким образом, вы обычно получаете необходимую информацию по гиперссылке, и вам не нужно отправлять другой запрос, чтобы получить значения по умолчанию.
Если вы хотите усложнить задачу, вы можете отправить запрос значений по умолчанию самому объекту, чтобы отправить значения свойств, а не отправлять форму с полями ввода. При желании вы можете отправить запрос, который возвращает всю ссылку, например GET /Entity/{id}/SubEntity/offset=0&count=0
Можно вернуть пустой массив субтитров и форму для создания. Вы можете использовать дополнительные параметры запроса или пути, если эта форма действительно большая, и вы не хотите отправлять ее с каждым ответом, связанным с коллекцией SubEntity. Спецификация URL говорит только о том, что путь должен содержать иерархическую часть, а запрос должен содержать неиерархическую часть URL.
Btw. REST - это просто метод доставки, вам не нужно привязывать его к объектам вашей базы данных. Структура ресурса REST и URL может полностью отличаться от вашей базы данных, поскольку вы можете использовать любой тип механизмов хранения данных с REST, даже файловую систему...