Introduction à Django REST Framework



Documents pareils
4. SERVICES WEB REST 46

Architectures Web Services RESTful

Bien architecturer une application REST

Architecture Orientée Service, JSON et API REST

Petite définition : Présentation :

Applications et Services WEB: Architecture REST

Les Architectures Orientées Services (SOA)

Django et PostgreSQL sous la charge

COMPRENDRE L ARCHITECTURE DES WEB SERVICES REST. Amosse EDOUARD, Doctorant

Développer des Applications Internet Riches (RIA) avec les API d ArcGIS Server. Sébastien Boutard Thomas David

Devenez un véritable développeur web en 3 mois!

Nouveautés de Drupal 8. Léon

INTRODUCTION AU CMS MODX

Alfstore workflow framework Spécification technique

Cette application développée en C# va récupérer un certain nombre d informations en ligne fournies par la ville de Paris :

Sécurité des Web Services (SOAP vs REST)

Etude et développement d un moteur de recherche

Drupal un CMS orienté mé2er. Romain JARRAUD Mathieu GROS

Développement d'applications Web HTML5 L'art et la manière avec Visual Studio 2015 et TFS

SÉCURITÉ POUR LES ENTREPRISES UN MONDE NUAGEUX ET MOBILE. Sophia-Antipolis 01/07/2013 Cyril Grosjean

WEB & DÉVELOPPEMENT LES BASES DU WEB LE LANGAGE HTML FEUILLES DE STYLES CSS HISTORIQUE D INTERNET ET DU WEB LES DIFFÉRENTS LANGAGES

IBM Workplace : Live!

Configurer le Serveur avec une adresse IP Statique (INTERFACE :FastEthernet) : et un masque

Tour d horizon des CMS. Content Management System

Tests de montée en charge avec Tsung

e-obs : Conception et utilisation Rémy Decoupes Ether // ums3365

PHP CLÉS EN MAIN. 76 scripts efficaces pour enrichir vos sites web. par William Steinmetz et Brian Ward

Guide de formation EndNote Web Interface EndNote Web

Proposition d une architecture pour ebay, en mettant l accent sur les notions de scalabilité, de résilience, et de tolérance aux pannes.

Architectures d'intégration de données

les techniques d'extraction, les formulaires et intégration dans un site WEB

L3 informatique TP n o 2 : Les applications réseau

Le Web de Données Dan VODISLAV Université de Cergy-Pontoise Master Informatique M2 Plan

Technologies pour Web Services faciles : REST, JSON

Optimiser les performances d un site web. Nicolas Chevallier Camille Roux

Application Web et J2EE

Cursus Sage ERP X3 Outils & Développement. Le parcours pédagogique Sage ERP X3 Outils et Développement

Guide d'utilisation. Mendeley

INTRODUCTION À PYRAMID Gaël Bearstech. Crédits: Blaise Laflamme

Web Tier : déploiement de servlets

Intégration du Web 2.0 dans les solutions IBM

Découvrir Drupal. Les meilleurs thèmes et modules Drupal (présenta5on démo)

Technologies Web. Ludovic Denoyer Sylvain Lamprier Mohamed Amine Baazizi Gabriella Contardo Narcisse Nya. Université Pierre et Marie Curie

Internet. DNS World Wide Web. Divers. Mécanismes de base Exécution d'applications sur le web. Proxy, fire-wall

TP JEE Développement Web en Java. Dans ce TP nous commencerons la programmation JEE par le premier niveau d une application JEE : l application web.

COURS 5 Mettre son site en ligne! Exporter son site avec WordPress Duplicator Installer un logiciel FTP Faire le suivi des visites de son site avec

Bonnes pratiques de développement JavaScript

XML par la pratique Bases indispensables, concepts et cas pratiques (3ième édition)

IBM System i. DB2 Web Query for System i : le successeur de Query/400? Oui, mais bien plus!!!

Nos solutions Cloud Kain, le 27 mars 2013 Laurent Guelton, Administrateur Délégué. Copyright 2013 Orditech. Tous droits réservés. Version 2.

Présentation Internet

Sécurité des sites Web Pas un cours un recueil du net. INF340 Jean-François Berdjugin

FileMaker Server 11. Publication Web personnalisée avec XML et XSLT

N SIRET : N

La plate-forme ArcGIS : Votre avantage Géographique!

HTML5. Développement d applications Web. Visual Studio 2015 et TFS. L art et la manière. avec. Philippe DIDIERGEORGES

Le stockage local de données en HTML5

WysiUpStudio. CMS professionnel. pour la création et la maintenance évolutive de sites et applications Internet V. 6.x

Web Site Story Etude, développement et valorisation de votre présence internet

Extension SSO Java. Cette note technique décrit la configuration et la mise en œuvre du filtre de custom SSO Java.

BES WEBDEVELOPER ACTIVITÉ RÔLE

1 ère Université WEB. Courbevoie Samedi 21 octobre Votre site interactif sur internet.

SYSTÈMES D INFORMATIONS

Introduction aux concepts d ez Publish

Internet of Things Part 1

Présentation des CMS au CIFOM-EAA

Club informatique Mont-Bruno Séances du 18 janvier et du 17 février 2012 Présentateur : Michel Gagné

Les services usuels de l Internet

Campagnes d ings v.1.6

Créer du contenu en ligne avec WordPress

Interaction entre réseaux sociaux et sites web

Hébergement de site web Damien Nouvel

Editeurs de logiciels. Votre guide SMS

FileMaker Server 12. publication Web personnalisée avec XML

NoSQL. Introduction 1/30. I NoSQL : Not Only SQL, ce n est pas du relationnel, et le contexte. I table d associations - Map - de couples (clef,valeur)

Séminaire «Maîtrise de l information scientifique» Exploitation de l information : optimiser sa gestion documentaire

Apache Cocoon Framework d'applications XML Sylvain Wallez Anyware Technologies

Module BDWEB. Maîtrise d informatique Cours 9 - Xquery. Anne Doucet. anne.doucet@lip6.fr

GEOTREK, une application opensource pour la gestion et la valorisation des sentiers. Parc national des Ecrins Juin 2014 / Forum TIC de l ATEN

Migration des données du site ENKI

WordPress Référencement naturel (SEO) Optimiser. son référencement. Daniel Roch. Préface d Olivier Andrieu

RAPPORT DE STAGE GWT PRISE EN MAIN SERVLET - TEST DES DAO TELOSYS PLUGIN ECLIPSE WIZARD DATASET TELOSYS

Content Management System. bluecube. Blue Cube CMS V4.3 par Digitalcube

Outils de traitements de logs Apache

LES TECHNOLOGIES DU WEB APPLIQUÉES AUX DONNÉES STRUCTURÉES

WEBSEMINAIRE INTRODUCTION AU REFERENCEMENT

Dans nos locaux au 98 Route de Sauve NÎMES. Un ordinateur PC par stagiaire, scanner, imprimante/copieur laser couleur

FTP : File TRansfer Protocol => permets d envoyer des gros fichiers sur un serveur (ou de télécharger depuis le serveur)

Introduction à Microsoft InfoPath 2010

Django. Framework de développement Web

Développement d'un logiciel VoIP BlackBerry

BeEF : Browser Exploitation Framework

Créer une base de données vidéo sans programmation (avec Drupal)

Savoir- Faire Offres mé1ers Offres technologiques

Un exemple d'authentification sécurisée utilisant les outils du Web : CAS. P-F. Bonnefoi

WordPress Référencement naturel (SEO) Optimiser. son référencement. Daniel Roch. Préface d Olivier Andrieu

LE CMS GUPPY. 2) Décompression : Elle se fait simplement avec le logiciel 7-Zip ou tout autre logiciel.

La base de données dans ArtemiS SUITE

Publier dans la Base Documentaire

SYNC FRAMEWORK AVEC SQLITE POUR APPLICATIONS WINDOWS STORE (WINRT) ET WINDOWS PHONE 8

Transcription:

Introduction à Django REST Framework Xavier Dutreilh Rencontres Django 2015

Qu'est-ce que REST?

acronyme de REpresentational State Transfer

style d'architecture pour les systèmes hypermédia distribués

invention de Roy Fielding dans sa thèse de doctorat

application à de nombreux domaines, dont le web

Comment peut-on appliquer REST à un blog?

Client Navigateur web Application mobile Lire les articles GET /posts/ Lire les articles GET /posts/ HTML XML JSON Représentation Application Article Ressource Article Auteur Modèle BDD Articles Auteurs Table

Client Navigateur web Application mobile Consulter un article GET /posts/1/ Consulter un article GET /posts/1/ HTML XML JSON Représentation Application Article Ressource Article Auteur Modèle BDD Articles Auteurs Table

Client Navigateur web Application mobile Créer un article POST /posts/ Créer un article POST /posts/ HTML XML JSON Représentation Application Article Ressource Article Auteur Modèle BDD Articles Auteurs Table

Client Navigateur web Application mobile Modifier un article PUT /posts/1/ Modifier un article PUT /posts/1/ HTML XML JSON Représentation Application Article Ressource Article Auteur Modèle BDD Articles Auteurs Table

Client Navigateur web Application mobile Supprimer un article DELETE /posts/1/ Supprimer un article DELETE /posts/1/ HTML XML JSON Représentation Application Article Ressource Article Auteur Modèle BDD Articles Auteurs Table

Qu'est-ce que Django REST Framework?

boîte à outils de création d'architecture REST avec Django

Comment peut-on construire un blog avec Django REST Framework?

Client Navigateur web Application mobile Lire les articles GET /posts/ Parser Renderer Représentation Application Post Ressource Post User Modèle BDD Posts Users Table

Client Navigateur web Application mobile Liste des articles au format HTML Parser Renderer Représentation Application Post Ressource Post User Modèle BDD Posts Users Table

Client Navigateur web Application mobile Lire les articles GET /posts/ Parser Renderer Représentation Application Post Ressource Post User Modèle BDD Posts Users Table

Client Navigateur web Application mobile Liste des articles au format JSON Parser Renderer Représentation Application Post Ressource Post User Modèle BDD Posts Users Table

class PostViewSet(ModelViewSet): queryset = Post.objects.all() filter_backends = (DjangoFilterBackend, OrderingFilter) filter_class = PostFilter ordering_fields = ('title', 'date_created', 'date_updated') ordering = ('-date_updated',) pagination_class = PostPagination permission_classes = (IsAuthorOrReadOnly,) serializer_class = PostSerializer def perform_create(self, serializer): serializer.save(author=self.request.user)

Définition de la vue class PostViewSet(ModelViewSet): queryset = Post.objects.all() filter_backends = (DjangoFilterBackend, OrderingFilter) filter_class = PostFilter ordering_fields = ('title', 'date_created', 'date_updated') ordering = ('-date_updated',) pagination_class = PostPagination permission_classes = (IsAuthorOrReadOnly,) serializer_class = PostSerializer def perform_create(self, serializer): serializer.save(author=self.request.user)

Configuration des données de la vue class PostViewSet(ModelViewSet): queryset = Post.objects.all() filter_backends = (DjangoFilterBackend, OrderingFilter) filter_class = PostFilter ordering_fields = ('title', 'date_created', 'date_updated') ordering = ('-date_updated',) pagination_class = PostPagination permission_classes = (IsAuthorOrReadOnly,) serializer_class = PostSerializer def perform_create(self, serializer): serializer.save(author=self.request.user)

Définition du modèle de données de la vue class Post(Model): title = CharField(max_length=100) author = ForeignKey(User) content = TextField() date_created = DateTimeField(auto_now_add=True) date_updated = DateTimeField(auto_now=True) def str (self): return self.title

Activation du filtrage et du tri de la vue class PostViewSet(ModelViewSet): queryset = Post.objects.all() filter_backends = (DjangoFilterBackend, OrderingFilter) filter_class = PostFilter ordering_fields = ('title', 'date_created', 'date_updated') ordering = ('-date_updated',) pagination_class = PostPagination permission_classes = (IsAuthorOrReadOnly,) serializer_class = PostSerializer def perform_create(self, serializer): serializer.save(author=self.request.user)

Configuration des critères de filtrage de la vue class PostViewSet(ModelViewSet): queryset = Post.objects.all() filter_backends = (DjangoFilterBackend, OrderingFilter) filter_class = PostFilter ordering_fields = ('title', 'date_created', 'date_updated') ordering = ('-date_updated',) pagination_class = PostPagination permission_classes = (IsAuthorOrReadOnly,) serializer_class = PostSerializer def perform_create(self, serializer): serializer.save(author=self.request.user)

Définition des critères de filtrage de la vue class PostFilter(FilterSet): title = CharFilter(lookup_type='icontains') content = CharFilter(lookup_type='icontains') class Meta: model = Post fields = ('title', 'content')

Définition des critères de tri de la vue class PostViewSet(ModelViewSet): queryset = Post.objects.all() filter_backends = (DjangoFilterBackend, OrderingFilter) filter_class = PostFilter ordering_fields = ('title', 'date_created', 'date_updated') ordering = ('-date_updated',) pagination_class = PostPagination permission_classes = (IsAuthorOrReadOnly,) serializer_class = PostSerializer def perform_create(self, serializer): serializer.save(author=self.request.user)

Définition des critères de tri par défaut de la vue class PostViewSet(ModelViewSet): queryset = Post.objects.all() filter_backends = (DjangoFilterBackend, OrderingFilter) filter_class = PostFilter ordering_fields = ('title', 'date_created', 'date_updated') ordering = ('-date_updated',) pagination_class = PostPagination permission_classes = (IsAuthorOrReadOnly,) serializer_class = PostSerializer def perform_create(self, serializer): serializer.save(author=self.request.user)

Configuration de la pagination de la vue class PostViewSet(ModelViewSet): queryset = Post.objects.all() filter_backends = (DjangoFilterBackend, OrderingFilter) filter_class = PostFilter ordering_fields = ('title', 'date_created', 'date_updated') ordering = ('-date_updated',) pagination_class = PostPagination permission_classes = (IsAuthorOrReadOnly,) serializer_class = PostSerializer def perform_create(self, serializer): serializer.save(author=self.request.user)

Définition de la pagination de la vue class PostPagination(PageNumberPagination): page_size = 10

Configuration des permissions de la vue class PostViewSet(ModelViewSet): queryset = Post.objects.all() filter_backends = (DjangoFilterBackend, OrderingFilter) filter_class = PostFilter ordering_fields = ('title', 'date_created', 'date_updated') ordering = ('-date_updated',) pagination_class = PostPagination permission_classes = (IsAuthorOrReadOnly,) serializer_class = PostSerializer def perform_create(self, serializer): serializer.save(author=self.request.user)

Définition des permissions de la vue class IsAuthorOrReadOnly(IsAuthenticatedOrReadOnly): def has_object_permission(self, request, view, obj): return ( request.method in SAFE_METHODS or obj.author == request.user )

Configuration du sérialiseur de la vue class PostViewSet(ModelViewSet): queryset = Post.objects.all() filter_backends = (DjangoFilterBackend, OrderingFilter) filter_class = PostFilter ordering_fields = ('title', 'date_created', 'date_updated') ordering = ('-date_updated',) pagination_class = PostPagination permission_classes = (IsAuthorOrReadOnly,) serializer_class = PostSerializer def perform_create(self, serializer): serializer.save(author=self.request.user)

Définition du sérialiseur de la vue class PostSerializer(HyperlinkedModelSerializer): author = SerializerMethodField() class Meta: model = Post fields = ('url', 'title', 'author', 'content', 'date_created', 'date_updated') def get_author(self, obj) : return obj.author.get_full_name()

Affectation automatique de l'auteur class PostViewSet(ModelViewSet): queryset = Post.objects.all() filter_backends = (DjangoFilterBackend, OrderingFilter) filter_class = PostFilter ordering_fields = ('title', 'date_created', 'date_updated') ordering = ('-date_updated',) pagination_class = PostPagination permission_classes = (IsAuthorOrReadOnly,) serializer_class = PostSerializer def perform_create(self, serializer): serializer.save(author=self.request.user)

Où peut-on voir une démo?

code source disponible sur GitHub

Merci! Xavier Dutreilh xavier@dutreilh.com http://xavier.dutreilh.com/