Подтвердить что ты не робот

Рамки для реализации веб-службы REST в Django

Я ищу для реализации интерфейса RESTful для приложения Django. Это прежде всего приложение для передачи данных - интерфейс будет (на данный момент) доступен только для чтения.

Вопрос в том, какие инструменты/рамки Django имеют наибольший смысл для этой задачи.

Я вижу Django-rest и Django-piston. Там также возможность прокатки собственных.

Вопрос был задан здесь, но два года назад хорошие. Я хотел бы знать, что такое текущее состояние игры.

В этом вопросе, около 2008 года, сильное большинство голосов состояло в том, чтобы не использовать какую-либо структуру вообще - просто создайте представления Django, которые отвечают, например. JSON. (Вопрос также был рассмотрен, crica 2008, здесь.)

В текущем ландшафте, что имеет наибольший смысл?

4b9b3361

Ответ 1

ПРИМЕЧАНИЕ. Поскольку это сообщение было написано, django-piston больше нет активно поддерживается. Как уже упоминалось, посмотрите tastypieили django-rest-framework.

В самом деле, вы можете катиться самостоятельно, но там задействовано много шаблонов.

django-piston - исключительно простая в использовании и расширяемая микро-каркас. Помимо издевательства над всеми необходимыми представлениями и шаблонами url, он поддерживает прямое сопоставление моделей с интерфейсом REST, что приятно, если у вас простой пример использования. Я бы предложил изучить его.

Ответ 2

И поскольку этот вопрос по-прежнему очень хорошо оценивается в моих поисковых запросах в Google, я добавлю эту альтернативу в микс: http://django-rest-framework.org/

Мое первоначальное впечатление заключается в том, что он очень хорошо воплощает принципы проектирования API RESTful, описанные здесь: http://readthedocs.org/docs/restful-api-design/en/latest/

Ответ 3

Использование django-rest-interface

Все еще верно.

Это довольно тривиально, чтобы катиться самостоятельно. Каждый REST URI сопоставляется с функцией просмотра. Каждый метод REST (GET, POST, PUT, DELETE) является простым условием в функции просмотра.

Готово.

Ответ 4

Один из способов - свернуть свой собственный или использовать джанго-поршень, который отлично. Но проблема с поршнем заключается в том, что это доброжелательно привязано к существующему джанго-проекту, чтобы добавить API. Это сделано не столько для создания ресурсоориентированного API с поддержкой форматов, включая HTML.

Как я вижу пример использования для Piston, у вас есть полный веб-сайт, который обслуживает html-контент, но тогда вы присоедините api к этому в url/api/*. Затем вы пойдете и добавьте поршень к нему. В этом случае использование Piston великолепно, для существующего кода не требуется переписывать, и вы получаете все, что вам нужно. Возможно, что Piston работает хорошо, не отделяя api от пользователя, обращенного к части сайта, но я этого не пробовал.

Проще объяснить это несколькими примерами:

Bitbucket

Github

Bitbucket выполнен с Django и django-piston для API, а Github - с Ruby On Rails, который поддерживает поддержку ресурсов с различными форматами. Я не говорю, что вы должны переключиться на RoR, потому что мы все любим Django, и я не говорю, что вы не могли бы сделать это с помощью django, но было бы утомительно делать это самостоятельно во всех представлениях.

Итак, коллега и я решили, что нам нужна часть "волшебства" RoR в Django, но мы не хотели, чтобы это было волшебным, но облегчаем нашу жизнь, не абстрагируя все. Итак jgorset написал Respite, который немного Django для создания API RESTful так же, как RoR, но в Django. Он все еще находится в раннем развитии, но мы используем его ежедневно в наших рабочих проектах, и он очень настраиваемый, как и сам Django. Он пытается упростить создание ориентированных на ресурсы веб-страниц и структурировать ваш код, не мешая вам.

Поэтому, естественно, моя рекомендация - посмотреть и попробовать Respite: https://github.com/jgorset/django-respite/

Ответ 5

tastypie также вариант, я только что попробовал, и до сих пор он казался безболезненным. Я играю с фиктивным приложением, которое предоставляет API для клиента backbone.js, и я не использовал никаких кирпичных стен в этой библиотеке. В этой статье я попробовал это.