RESTful API для проектов / приложений Django - PullRequest
9 голосов
/ 20 ноября 2010

Что вы предпочитаете, когда хотите "RESTify" вашего проекта Django в Django?

Я пришел к выводу, что для этого есть три варианта:

Правильный способ сделать это для меня - это попробовать все из них и выбрать тот, который лучше для меня, так что пока что я хотел бы услышать ваше ...

Спасибо.

Ответы [ 4 ]

7 голосов
/ 20 ноября 2010

Я больше всего знаком с джанго-поршнем, поэтому я, естественно, направлю вас в этом направлении.

Беглый взгляд на два других, однако, указывает на то, что django-rest-interface делает не что иное, как выставляет модели в качестве ресурсов, и что django-restful-resources является однократной попыткой одного и того же парня.

Piston, если я правильно помню, вырос из bitbucket.org собственной разработки сайта и обеспечивает большую гибкость - вы можете вернуть практически любой объект из методов доступа вашего ресурса, а не только модель экземпляры, и это будет правильно закодировано. Он также имеет встроенную поддержку некоторых полезных функций, таких как проверка формы (если вы можете заставить ее работать правильно, в любом случае) и, среди прочего, регулирование запросов.

5 голосов
/ 01 февраля 2011

С новыми базовыми представлениями на основе классов в django 1.3 будет очень легко реализовать собственный интерфейс отдыха с пользовательскими сериализаторами и десериализаторами, копирующими почти полную реализацию поршня с использованием только исходного кода. Я создал модуль отдыха на основе View (1.3) из 500 строк кода, с общим классом ресурсов и подресурсами RESTful, поддержкой естественных ключей для ассоциаций, сериализацией json и XML и многим другим. модуль действительно с учетом требований моего приложения

Я сделал это, чтобы преодолеть пару ограничений в коде поршня, например, изменить набор запросов (например, с помощью .values ​​(...)) до того, как обработчик вызовет для него .get (), или не смог использовать метод модели в сериализации.

Если вы сделаете это так, как вам нужно, через пару дней у вас будет рабочий набор классов и миксинов, которые вы полностью поймете и будете контролировать.

3 голосов
/ 03 декабря 2010

Как «какой-то парень», который написал django-restful-resources, я хотел бы уточнить, почему он существует. Это НЕ попытка представить модели как ресурсы, скорее это средство, позволяющее сопоставить один URL-адрес множеству различных методов-обработчиков, по одному на каждый HTTP-глагол. Это все. Он может использоваться для представления объектов модели, но также может использоваться для предоставления услуг в качестве ресурсов или чего-либо еще, с чем вы хотите взаимодействовать через один URL и глаголы HTTP. Если вы ищете более полнофункциональное решение, тогда обязательно используйте Piston.

2 голосов
/ 31 января 2011

Как уже упоминалось в eternicode, Джанго-поршень отлично.Он зрелый, с хорошими характеристиками и хорошим сообществом.Похоже, что в настоящее время ему не уделяется достаточного внимания, хотя есть разговоры о сообществе, которое может измениться.

django-tastypie также стоит посмотреть, и, похоже, на данный момент за этим стоит большой импульс.

Я также только что выпустил еще один вариантэто стоит рассмотреть: django-rest-framework .За этим стоит пара действительно хороших функций, таких как API-документация .

. Он использует представления на основе классов Django 1.3, как упомянуто saverio, что означает, что вы можете просто удалитьв некоторых классах MixIn, которые он предоставляет, без необходимости использовать каркас напрямую.(Например, добавление согласования содержимого HTTP для сериализации вывода для нескольких типов )

...