В чем разница между 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.