В чем разница между cornice.Service и cornice.resource в Корнисе?
Я много раз читал документацию и искал ответ на этот вопрос, но придумал короткий. В частности, я рассмотрел Определение службы и API Cornice для службы и Определение ресурса для ресурса.
В настоящее время я создаю REST API, который будет иметь такую же структуру:
GET /clients # Gets a list of clients
GET /clients/{id} # Gets a specific client
GET /clients/{id}/users # Gets a specific clients users
Каким будет лучший способ? Должен ли я использовать сервис или ресурс или и то, и другое? И, если оба, как?
Ответы
Ответ 1
Ресурсы - это удобство на высоком уровне, услуги предлагают более низкий уровень управления.
Я просто изучаю карниза. Рассматривая исходный код, ресурс создает службы внутри, один для элемента и один для коллекции (если указан путь к коллекции). Ресурс также добавляет представления к службам для каждого метода, определенного с помощью глагола http, как имя или в виде collection_ [verb].
Таким образом, существует небольшая разница, за исключением того, что ресурсы - это аккуратный, структурированный способ определения сервисов.
Ответ 2
Декоратор ресурсов использует url для коллекции, а также шаблон url для объекта.
collection_path =/отдых/пользователей
Путь =/Остальные/пользователей/{ID}
Декоратор ресурсов лучше всего использовать в классах вида, где вы можете использовать методы get/put/post/delete для объектов, а также collection_get, collection_put и т.д. в коллекции. У меня есть несколько примеров:
https://github.com/umeboshi2/trumpet/blob/master/trumpet/views/rest/users.py
Поскольку я активно использую классы декораторов ресурсов и классов, я не нашел необходимости в сервисной функции, но это позволяет вам создавать декодеры get, put, post, которые обертывают вид вызываемых функций.
Если вы используете backbone.js на стороне клиента, примеры декораторов ресурсов и URL-адресов хорошо работают с коллекциями и моделями Backbone.