Фреймворк для реализации веб-сервиса REST в Джанго - PullRequest
22 голосов
/ 21 марта 2010

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

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

Я вижу Джанго-покой и Джанго-поршень. Также есть возможность прокатиться самостоятельно.

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

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

Что имеет смысл в текущем ландшафте?

Ответы [ 5 ]

18 голосов
/ 22 марта 2010

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

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

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

9 голосов
/ 14 сентября 2011

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

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

4 голосов
/ 30 июня 2011

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

Я вижу пример использования Piston: у вас есть полноценный веб-сайт, который обслуживает HTML-контент, но затем выприкрепил бы api к этому в url / api / *.Затем вы идете и добавляете к нему поршень.С этим сценарием использования Piston великолепен, нет необходимости переписывать существующий код, и вы получаете все, что вам нужно.Может случиться так, что Piston работает хорошо, не отделяя API от пользователя, обращенного к части сайта, но я этого не пробовал.

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

Bitbucket

Github

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

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

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

4 голосов
/ 21 марта 2010

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

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

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

Готово.

2 голосов
/ 28 декабря 2011

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

...