Aujourd'hui, nous sommes ravis de publier une nouvelle version de notre bibliothèque Python de base, ainsi que les versions de nos bibliothèques spécifiques au framework pour FastAPI, Flask et Django Rest Framework.
Passons à certains des changements les plus importants !
Si vous avez déjà utilisé nos bibliothèques Python, les indications de type laissaient beaucoup à désirer. Dans notre dernière version, nous avons désormais des indications de type pour toutes les requêtes ainsi que des types de données pour toutes les réponses.
REMARQUE : cela se brisera spécifiquement si vous déballiez auparavant (en utilisant l'opérateur **) les réponses. Les réponses étaient auparavant des dictées et sont désormais des types de données explicites.
Nous avons implémenté des fonctions couramment utilisées comme une recherche de clé (response["user_id"] fonctionnera toujours, mais réponse.user_id est désormais préféré). Nous essayons généralement d'éviter de briser les changements (c'est notre deuxième en 3 ans), mais cela nous semblait être un problème assez limité.
Pour une vérification plus simple des autorisations, vous pouvez désormais appeler des fonctions directement sur l'objet Utilisateur comme :
Ceux-ci vous permettent de faire circuler l'objet User au lieu d'avoir besoin de vous référer à l'objet Auth, et cela permet également de se moquer/tester plus facilement.
Ceci n'est pas spécifique à notre bibliothèque Python, mais nous avons publié de nombreuses nouvelles API comme :
Voir la liste complète dans nos documents de référence ici.
Chez PropelAuth, nous avons eu la chance d'être aux premières loges pour voir de nombreuses entreprises SaaS B2B se développer. Les fournisseurs d'authentification sont particulièrement importants aux moments critiques de l'histoire d'une entreprise (lancement initial, intégration de votre premier client, fermeture de votre premier client d'entreprise, etc.). La chose la plus importante que nous puissions faire à mesure que vous grandissez est de nous écarter du chemin.
C'est pourquoi nous sommes vraiment satisfaits de cette route FastAPI :
@app.post("/api/expensive-action") async def do_expensive_action(user: User = Depends(auth.require_user)): org = user.get_active_org() if org == None or \ not org.user_has_permission("can_do_expensive_action"): raise HTTPException(status_code=403, detail="Forbidden") return do_expensive_action_inner(user, org)
À première vue, cet itinéraire semble assez simple, mais il comporte quelques éléments importants :
@app.post("/api/expensive-action") async def do_expensive_action(user: User = Depends(auth.require_user)): org = user.get_active_org() if org == None or \ not org.user_has_permission("can_do_expensive_action"): raise HTTPException(status_code=403, detail="Forbidden") return do_expensive_action_inner(user, org)
Et le meilleur ? Le même extrait de code ci-dessus continuera à fonctionner. Même si les exigences de nos clients deviennent plus compliquées, votre code ne le sera pas.
Nous cherchons toujours à améliorer nos bibliothèques et nos services en fonction de vos commentaires. Si vous avez des questions sur cette version ou des suggestions d'améliorations futures, n'hésitez pas à nous contacter.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!