Je suis débutant dans le framework Django REST et j'ai besoin de vos conseils. Je développe un service web. Le service doit fournir une interface REST à d'autres services. L'interface REST, que je dois implémenter, ne fonctionne pas directement avec mes modèles (je veux dire les opérations get, put, post, delete). Au lieu de cela, il fournit d'autres services avec des résultats de calcul. Sur demande, mon service effectue des calculs et renvoie simplement les résultats (ne stocke pas les résultats dans sa propre base de données).
Voici ma compréhension de la façon dont cette interface REST pourrait être implémentée. Corrigez-moi si je me trompe.
- Créez une classe qui effectue les calculs. Nommez-le «CalcClass». CalcClass utilise les modèles dans son travail.
- Les paramètres nécessaires aux calculs sont transmis au constructeur.
- Implémentez l'opération calc. Il renvoie les résultats sous la forme «ResultClass».
- Créez ResultClass.
- Dérivé de l'objet.
- Il n'a que des attributs contenant les résultats de calcul.
- Une partie des résultats de calcul est représentée sous forme de tuple de tuples. Si je comprends bien, il serait préférable pour une sérialisation ultérieure d'implémenter une classe distincte pour ces résultats et d'ajouter une liste de ces objets à ResultClass.
- Créez un sérialiseur pour ResultClass.
- Dériver des sérialiseurs.Serializer.
- Les résultats de calcul sont en lecture seule, utilisez donc principalement la classe Field pour les champs, au lieu de classes spécialisées, telles que IntegerField.
- Je ne devrais pas impliquer la méthode save () ni sur ResultClass, ni sur Serializer, car je ne vais pas stocker les résultats (je veux juste les renvoyer sur demande).
- Sérialiseur d'impl pour les résultats imbriqués (rappelez-vous le tuple de tuples mentionné ci-dessus)
- Créer une vue pour renvoyer les résultats du calcul.
- Dérivé d'APIView.
- Besoin juste d'obtenir ().
- Dans get (), créez CalcClass avec les paramètres extraits de la requête, appelez son calc (), récupérez ResultClass, créez Serializer et passez-lui la ResultClass, retournez Response (serializer.data).
- URL
- Il n'y a pas de racine api dans mon cas. Je devrais juste avoir des URL pour obtenir divers résultats de calcul (calc avec des paramètres de diff).
- Ajoutez un appel à format_suffix_patterns pour la navigation dans l'API.
Ai-je oublié quelque chose? L'approche est-elle correcte en général?