Добавление REST в Django

У меня есть приложение Django, которое прекрасно работает. Я добавляю услуги REST. Я ищу дополнительный вклад в мою стратегию REST.

Вот несколько примеров того, что я нажимаю на руки.

  • Прямо сейчас, я использую API Django-REST с кучей патчей.
  • Я подумываю о возвращении к простому написанию функций просмотра в Django, которые возвращают результаты JSON.
  • Я также вижу фильтрацию запросов REST в Apache и маршрутизацию их на отдельный экземпляр сервера, отличного от Django.

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

  • Обязательное поле serializer Django REST Framework = false
  • Значение внешнего ключа в Django REST Framework
  • Как я могу захватить параметр API в представлении Django?
  • Я получаю ошибку 400 Bad Request при использовании django-piston
  • HTTP-запрос Python с контролируемым упорядочением заголовков HTTP
  • Чтение JSON из SimpleHTTPServer
  • websocket vs rest API для данных в реальном времени?
  • InsecurePlatformWarning: истинный объект SSLContext недоступен. Это не позволяет urllib3 правильно настроить SSL
  • 11 Solutions collect form web for “Добавление REST в Django”

    Я подумываю о возвращении к простому написанию функций просмотра в Django, которые возвращают результаты JSON.

    • Явный
    • Переносимость в другие структуры
    • Не требует исправления Django

    Обратите внимание, что REST не означает только результаты JSON. REST по существу означает предоставление ресурсоориентированного API поверх собственного, но полноценного HTTP. Я не специалист по REST, но вот некоторые из вещей, которые делает Rails.

    • URL-адреса должны быть хорошими, простыми именами для ресурсов
    • Использовать правильные HTTP-методы
      • HEAD, GET, POST, PUT и DELETE
      • Необязательно с переопределением (параметр формы '_method' переопределяет HTTP-запрос-метод)
    • Поддержка согласования типа контента с помощью Accept-header-заголовка
      • Опционально с переопределением (расширение имени файла в URL-адресе переопределяет MIME-тип в заголовке запроса Accept)
      • Доступные типы контента должны включать XML, XHTML, HTML, JSON, YAML и многие другие в зависимости от ситуации

    Например, чтобы получить поддержку встроенного HTTP, сервер должен ответить на

    GET /account/profile HTTP/1.1 Host: example.com Accept: application/json 

    поскольку он будет реагировать на

     GET /account/profile.json HTTP/1.1 Host: example.com 

    И он должен ответить на

     PUT /account/profile HTTP/1.1 Host: example.com var=value 

    поскольку он будет реагировать на

     POST /account/profile HTTP/1.1 Host: example.com _method=PUT&var=value 

    Для всех, кто ищет очень приличное приложение для Django, подключаемое к API, убедитесь, что вы проверяете django-поршень jespern, который используется внутри BitBucket.

    Он в хорошем состоянии, имеет отличные следы и некоторые классные вилки, которые делают такие вещи, как добавление поддержки разбивки на страницы и другие методы проверки подлинности (OAuth поддерживается из коробки).

    Обновлено, чтобы отразить, что джанго-поршень больше не поддерживается.

    Tastypie также является новой структурой REST для Django. Он имеет такое же мышление, что и поршни, и удаляет много кодировки.

    Мой ответ на тот же вопрос здесь: Рамки для реализации веб-службы REST в Django

    Краткая версия – посмотрите на https://github.com/jgorset/django-respite/ структуру REST в свои ранние дни, но мы используем ее каждый день в клиентских проектах.

    Отбросьте Django REST api и придумайте свой собственный проект с открытым исходным кодом, которым другие могут помочь. Я бы хотел внести свой вклад. У меня есть код, основанный на формах api, чтобы сделать REST.

    Я подумываю о возвращении к простому написанию функций просмотра в Django, которые возвращают результаты JSON.

    Я бы пошел с этим ..
    Али А это очень хорошо.

    Главное для меня – явное указание. Я бы избегал использовать функцию, которая автоматически преобразует объект в json, что, если объект имеет ссылку на пользователя и каким-то образом пароль (даже если он хэширован) переходит в json snippit?

    Я закончил с моей собственной структурой REST API для Django (с которой мне бы хотелось избавиться, если бы я мог найти работоспособную альтернативу), с несколькими пользовательскими представлениями, которые были добавлены в угловые случаи, с которыми я не хотел иметь дело. Все в порядке.

    Таким образом, комбинация 1 и 2; без какой-либо формы каркаса вы в итоге напишите один и тот же шаблон для обычных случаев.

    Я также сделал несколько автономных API. Мне нравится иметь их как автономные службы, но сам факт того, что они стоят отдельно от остальной части кода, приводит к тому, что они игнорируются. Никакой технической причины; просто вне поля зрения, вне сознания.

    То, что я действительно хотел бы видеть, – это подход, который объединяет формы Django и API REST, поскольку они часто разделяют много логики. Концептуально, если ваше приложение выставляет что-то в HTML, оно, вероятно, также хочет отобразить его программно.

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

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

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

    вы можете попробовать создать общие функции, обрабатывающие данные (например, указанные в параде), которые вы можете вызывать из представлений, генерирующих веб-страницы, а также те, которые генерируют json / xml / whatever

    TastyPie выглядит довольно интересно и многообещающе. Это хорошо сочетается с Django.

    Python - лучший язык программирования в мире.