Slide 1

Slide 1 text

django-rester, как легкая альтернатива Django Rest Framework Александр Ковалев https://alkov.pro Сергей Ковалев https://www.fb.com/acropyth

Slide 2

Slide 2 text

О себе  Около 25 лет в разработке:  Assembler  C/C++  FoxBase/FoxPro/Clipper  PHP  Perl  VBA (Макросы Microsoft Office)  1С 7.7 - 8.3

Slide 3

Slide 3 text

Disclaimer Доклад НЕ про Яндекс! Осторожно, MVP!

Slide 4

Slide 4 text

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

Slide 5

Slide 5 text

django-rester BaseAPIView: @permissions request_fields response_fields AuthBackend: JWT redis

Slide 6

Slide 6 text

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’, }

Slide 7

Slide 7 text

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'), } }

Slide 8

Slide 8 text

POST: response = { "success": True, "message": "", "data": { "id": 1, "title": "Super Cool Post", "fk": [ { "id": 233 } ] } }

Slide 9

Slide 9 text

Ключевые элементы class BaseApiView @permissions

Slide 10

Slide 10 text

Профит Автоматическая валидация request и response JWT авторизация с возможностью отзыва token’ов SWAGGER Docs! (in progress though) ;) Быстрая и понятная разработка API с низким порогом входа :) Простая поддержка и доработка API

Slide 11

Slide 11 text

Что дальше? Отладка, оптимизация Feedback довольных (и не очень) пользователей :) Много тем для дальнейших докладов! :) SWAGGER Docs Тесты

Slide 12

Slide 12 text

Спасибо за внимание! Вопросы? Я здесь: [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