Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Django-rester, как легкая альтернатива django-rest-framework

Django-rester, как легкая альтернатива django-rest-framework

Александр Ковалёв (Яндекс) @ Moscow Python Meetup 54
"При разработке сервисов на django, мы столкнулись с тем, что не пользуемся большей частью пакета django-rest-framework, о чем я упоминал на Moscow Python Conf 2017. В итоге мы сделали свой небольшой пакет для простой реализации REST API в Django проектах".
Видео: http://www.moscowpython.ru/meetup/54/django-rester/

Moscow Python Meetup

March 22, 2018
Tweet

More Decks by Moscow Python Meetup

Other Decks in Programming

Transcript

  1. О себе  Около 25 лет в разработке:  Assembler

     C/C++  FoxBase/FoxPro/Clipper  PHP  Perl  VBA (Макросы Microsoft Office)  1С 7.7 - 8.3
  2. DRF?! WTF?! Requests Responses Views Generic views Viewsets Routers Parsers

    Renderers Serializers Serializer fields Serializer relations Versioning Content negotiation Metadata Schemas Format suffixes Validators Authentication Permissions Throttling Filtering Pagination Format suffixes Returning URLs Exceptions Status codes Testing Settings
  3. 1. pip install django-rester 2. settings.py: DJANGO_RESTER = { 'RESPONSE_STRUCTURE':

    { 'success': 'success', 'message': 'message', 'data': 'data', }, 'CORS_ACCESS': True, 'SOFT_RESPONSE_VALIDATION': True, 'AUTH_BACKEND': 'django_rester.rester_jwt', 'FIELDS_CHECK_EXCLUDED_METHODS': ['OPTIONS', 'HEAD'], } DJANGO_RESTER_JWT = { 'SECRET': 'secret-key', 'EXPIRE': 60 * 60 * 24 * 14, 'AUTH_HEADER': 'Authorization', 'AUTH_HEADER_PREFIX': 'jwt', 'ALGORITHM': 'HS256', 'PAYLOAD_LIST': ['username'], 'USE_REDIS': False, 'LOGIN_FIELD': 'username’, }
  4. class TestView(BaseAPIView): request_fields = { "POST": { "id": JSONField(field_type=int, required=True,

    ), "title": JSONField(field_type=str, required=True, default='some_title'), }, "GET": { "title": JSONField(field_type=str, required=True, default='some_title'), } } response_fields = { "POST": { "id": JSONField(field_type=int, required=True, ), "title": JSONField(field_type=str, required=True, default='some_title'), "fk": [ {"id": JSONField(field_type=int, required=True)} ] }, "GET": { "title": JSONField(field_type=str, required=True, default='some_title'), } }
  5. POST: response = { "success": True, "message": "", "data": {

    "id": 1, "title": "Super Cool Post", "fk": [ { "id": 233 } ] } }
  6. Профит Автоматическая валидация request и response JWT авторизация с возможностью

    отзыва token’ов SWAGGER Docs! (in progress though) ;) Быстрая и понятная разработка API с низким порогом входа :) Простая поддержка и доработка API
  7. Что дальше? Отладка, оптимизация Feedback довольных (и не очень) пользователей

    :) Много тем для дальнейших докладов! :) SWAGGER Docs Тесты
  8. Спасибо за внимание! Вопросы? Я здесь: [email protected] https://alkov.pro https://www.facebook.com/alkov.pro https://github.com/alkovpro

    https://github.com/lexycore https://github.com/devopshq/crosspm https://github.com/devopshq/youtrack Сергей Ковалев здесь: https://www.facebook.com/acropyth https://github.com/CruelSoftware https://github.com/lexycore