Django и Restful API

58

Я боролся с выбором методологии создания RESTful API с Django. Ни один из подходов, которые я пробовал, кажется, является "серебряной" пулей. WAPI из http://fi.am, вероятно, ближе всего к тому, что я хотел бы выполнить, однако я не уверен, допустим ли он в истинном API RESTful чтобы параметры, являющиеся идентификаторами ресурсов, были в запросе, а не в "чистом" URL-формате. Любые предложения по изменению WAPI RestBinding.PATTERN для "очистки" URL-адресов? Другой вариант, который я изучил, - это Django-Rest-Interface. Однако эта структура, по-видимому, нарушает одну из наиболее важных частей, которые мне нужны, и это включает полный URL ресурсов для ссылок на другие ресурсы (см. http://jacobian.org/writing/rest-worst-practices/ Неправильное использование ссылок). Окончательный вариант - использовать django-multiresponse и в основном сделать это долгий путь.

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

Теги:
rest

8 ответов

18
Лучший ответ

Я считаю, что недавно выпущенный django-piston стал лучшим решением для создания надлежащего интерфейса REST в Django. django-piston

Примечание: django-piston, похоже, больше не поддерживается (см. комментарии ниже)

  • 7
    Джанго-поршень не был в хорошем состоянии в течение многих лет. Хотя у него есть новый сопровождающий, лучше выбрать что-то более свежее на djangopackages.com/grids/g/api .
  • 10
    Я бы настоятельно рекомендовал избегать джанго-поршня. Я использую его с тех пор, как он был заброшен и может сделать жизнь очень болезненной, особенно если вам нужно начать что-то удаленно нестандартное с помощью сериализатора.
Показать ещё 3 комментария
39

Для Django, помимо тастипии и поршня, django-rest-framework является многообещающим, заслуживающим упоминания. Я уже платил один из моих проектов.

Структура Django REST - это легкая структура REST для Django, которая направлена ​​на упрощение построения хорошо связанного, самоописывающегося RESTful Веб-интерфейсы.

Быстрый пример:

from django.conf.urls.defaults import patterns, url
from djangorestframework.resources import ModelResource
from djangorestframework.views import ListOrCreateModelView, InstanceModelView
from myapp.models import MyModel

class MyResource(ModelResource):
    model = MyModel

urlpatterns = patterns('',
    url(r'^$', ListOrCreateModelView.as_view(resource=MyResource)),
    url(r'^(?P<pk>[^/]+)/$', InstanceModelView.as_view(resource=MyResource)),
)

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

Ссылки: http://django-rest-framework.org/

  • 0
    Я также в процессе перехода с Piston на django-rest-framework. Выглядит очень приятно в использовании.
  • 0
    Кажется, все больше и больше проектов будут перенесены. Большой! :)
Показать ещё 1 комментарий
9

django-tastypie - это хороший способ сделать это, их лозунг: "Создание вкусных API для приложений Django с 2010 года" довольно успокаивает;)

5

Вы можете взглянуть на django-dynamicresponse, что является легкой основой для добавления REST API с JSON в ваши приложения Django.

Это требует минимальных изменений для добавления поддержки API в существующие приложения Django и позволяет с самого начала в новых проектах напрямую встраивать API.

В основном, он включает поддержку промежуточного программного обеспечения для разбора JSON в request.POST, в дополнение к сериализации возвращаемого контекста JSON или визуализации шаблона/перенаправления условно на основе типа запроса.

Этот подход отличается от других фреймворков (например, django-piston) тем, что вам не нужно создавать отдельные обработчики для запросов API. Вы также можете повторно использовать существующую логику представления и продолжать использовать проверку формы и т.д., Как обычные представления.

4

Я не знаю, может ли этот проект быть полезным для вас, но отправка ссылки вряд ли может повредить. Взгляните на django-apibuilder, доступный от http://opensource.washingtontimes.com/projects/django-apibuilder/. Возможно, это может быть полезно?

/Jesper

0

Я предлагаю вам заглянуть в Django Rest Framework (DRF), поиграть с этим и посмотреть, подходит ли он вашим требованиям. Причина, по которой я рекомендую DRF, заключается в том, что это делает представление API очень простым с использованием классов GenericAPIView, классов Mixin и смешанных в общих представлениях. Вы можете легко использовать проверенные и проверенные шаблоны проектирования для создания конечных точек API, а также для обеспечения четкости и краткости вашей базы кода. Вы также DRY, когда записываете свой код, который всегда велик. Ваши представления API длиной буквально 2-3 строки.

Вы можете проверить этот учебник http://programmathics.com/programming/python/django-rest-framework-setup/, который начинается от настройки среды для прохождения различных способов сделать ваш RESTful API с помощью рамки django rest.

Отказ от ответственности: я являюсь создателем этого веб-сайта.

0

https://github.com/RueLaLa/savory-pie

Savory Pie - это среда REST, поддерживающая django.

0

Посмотрите на RestifyDjango.

В некоторой степени связаны Django XML-RPC и JSON-RPC.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню