【 python】 échafaudage fastapi: spécification du développement du projet d'interface arrière fastapi

Moon ai 2021-10-29 09:24:36
python chafaudage fastapi sp cification

Cet outil est principalement utilisé pour aider à la spécificationFastAPICatalogue du projet et style de code, etc,Objectifs de l'outil:

  • 【Outils plus lourds que les spécifications】SpécificationsFastAPIDéveloppement de projets d'interface d'arrière - plan;
  • Améliorer l'efficacité du développement de l'arrière - plan,Réduire les doubles emplois;
  • Accroître la possibilité de partager le développement de modules entre différents projets.

Outils adresse du projet:https://github.com/ibbd-dev/fastapi-start

1. Description de la fonction

  • Initialisation du projet
  • Ajouter un module
  • GénérerPythonDocumentation
  • Test de style de code
  • Substitutiongit cloneOrdre decloneLes ordres,Et générer un chemin de répertoire normalisé

2. Instructions d'installation

# linux
sudo -H pip3 install -r https://github.com/ibbd-dev/fastapi-start/raw/main/requirements.txt
sudo -H pip3 install git+https://github.com/ibbd-dev/fastapi-start.git
# windows
pip install -r https://github.com/ibbd-dev/fastapi-start/raw/main/requirements.txt
pip install git+https://github.com/ibbd-dev/fastapi-start.git

OR

# Installation du code sourcepip install -r requiresment.txteasy_install .

3. Mode d'emploi

Après une installation réussie, Il y aura deux ordres

  • fastapi-start: Commande complète
  • fas: Commandes simples( Alias de la commande complète ), La fonction d'implémentation est la même que la commande complète

Utilisez des commandes simples tous les jours .

# Initialisation du projet
# test C'est le nom du projet , Peut être spécifié comme son propre nom de projet
# --title and --desc: Titre et description du projet
fas project-init test --title=Projet d'essai --desc= C'est un projet d'essai
# Racine du projet
# Répertoire des codes de projet
cd test/app
# DémarragehttpServices
uvicorn main:app --reload --host 0.0.0.0
# Ouvrir dans le navigateur:http://127.0.0.1:8000/docs#/
# Voir la documentation de l'interface
# Ajouter un module
# moduleEst le nom du module,Peut être réglé
fas module-add module
# Après l'ajout du module , Pour que le module prenne effet ,Besoin d'un manuel surapp/main.py Enregistrer la route dans le fichier
# prefix: Ce paramètre définit le préfixe de la route , Le préfixe de routage de chaque module doit être unique
from module.router import router as module_router
app.include_router(module_router, prefix="/module", tags=["Module d'essai"])
# Ajouter un test.pyDocumentation
fas file --filename=test

3.1 Documents d'aide

# Afficher tous les documents d'aide
fas --help
# Document d'aide pour une commande
fas project-init --help
# Voir le numéro de version
fas version
# Si ce n'est pas réglé,Est utilisé automatiquementgitConfiguration dansuser.nameEtuser.email
fas config --set --author=caiyy [email protected]
# Paramètresgit clone Répertoire racine de la commande
fas config --set --root-path=/var/www/src
# Vous pouvez voir les informations de configuration
fas config
# cloneProjets
# Le projet est automatiquement sauvegardé dans un répertoire normalisé :{root-path}/git.ibbd.net/gf/iot-warning
# root-path C'est la configuration définie précédemment :fas config --set --root-path=/var/www/src
fas clone [email protected]:gf/iot-warning.git
# Examen des spécifications du Code
# Examiner le répertoire actuel
fas check
# Examiner le répertoire désigné
fas check app
# Générer dans le répertoire courant README.md
fas file --filetype=readme --title=Titre du test --desc=Informations descriptives

4. FastAPIDéveloppement de projets

Le style de codage suit PEP8, Référence au style d'interface RESTFul.

Description des règles importantes :

  • Utiliser4Espaces indentés,Utilisation de nouveaux caractères de ligne\n(vscode L'éditeur doit être configuré pour LF,Au lieu deCRLF)
  • Utilisation uniforme des documents UTF-8Codage
  • Le type d'exception pour la réponse de l'interface utilise HTTPCode d'état pour
  • HTTP Scénario d'utilisation de la méthode :
    • GET: Obtenir des données
    • DELETE: Supprimer les données
    • PUT: Modifier les données
    • POST: Ajouter des données et des requêtes complexes
  • Le type de paramètre d'entrée / sortie de la fonction nécessite une définition de type explicite , Granularité au type simple le plus basique , Comme booléen ,Taille,Type de point flottant,Chaînes, etc.. Pour les types complexes , Devrait être affiné :
from typing import Tuple, List, Dict, Set
# Tuple
Tuple[int, str, int] # Un Tuple de trois éléments
# Liste
List[int] # Le type d'élément estintListe de
# Dictionnaire
Dict[str, int] # keyLe type eststr,valueLe type estint
# Ensemble( Et le type de liste )
Set[int]

RÉFÉRENCESPythonProgrammation de type

  • InFastAPI Essayez de ne pas définir l'entrée / sortie du Dictionnaire , Utilisez plutôt l'héritage de BaseModelStructure de classe pour, Vous pouvez définir en détail schema.

4.1 Basé surFastAPI Les grands et moyens projets devraient avoir

  • Les paramètres et les valeurs de retour de la fonction doivent avoir une définition claire du type de paramètre .
  • Les modules doivent être organisés par routage , Module serré à l'intérieur et desserré à l'extérieur .
  • L'interface doit être testée à l'unit é , Des tests unitaires peuvent être effectués au moment du déploiement pour vérifier .
  • La documentation interactive devrait être claire et Claire , Facile à lire pour les utilisateurs , Comprendre et tester .

4.2 Structure du Répertoire des projets

.
├── app
│ ├── __init__.py
│ ├── readme.md # Description de l'interface document
│ ├── main.py # Fichier d'entrée principal
│ ├── schema.py # Généralitésschema
│ ├── settings.py # Profil
│ ├── dependencies.py #
│ ├── exceptions.py # Corrélation anormale
│ ├── utile.py # Fonctions générales de l'outil
│ ├── common # Module commun
│ │ ├── __init__.py
│ └── module_name # Répertoire des modules, Chaque module est séparé dans un répertoire
│ ├── __init__.py
│ ├── router.py # Fichier de routage du module
│ └── schema.py # Du moduleschema
├── .vscode # vscodeConfiguration
│ ├── settings.json
├── .gitignore
├── README.md # Description du projet document
├── Dockerfile # Docker
├── requirements.txt # Paquet de dépendances du projet 

Le routage du module et son profil sont placés directement dans le Répertoire du module , Au lieu d'isoler toutes les configurations de routage dans un seul répertoire .

4.3 Modules normalisés

Modules normalisés , Vous pouvez utiliser la commande pour ajouter rapidement

  • Module de code de vérification
  • Module de gestion des utilisateurs et de connexion

4.4 Notes

  • Les sous - modules peuvent également être imbriqués sous le module , Je ne peux pas continuer à faire ça , Mais ce n'est pas recommandé , Cela rend le système trop complexe ;

5. PythonSpécification de codage

  • PEP8Spécifications:https://alvinzhu.xyz/2017/10/07/python-pep-8/
  • Google Open Source Project Style Guide for :https://zh-google-styleguide.readthedocs.io/en/latest/google-python-styleguide/python_style_rules/
  • RESTFul
  • PythonProgrammation de type

PS: Pendant les vacances, la famille Fengzhi , J'ai enfin perfectionné cet outil .

Cet article est partagé par Wechat public Number - SauvageAIArchitecte(Moon-CV) ,Auteur:La luneAI

La source originale et les informations reproduites sont détaillées dans le texte,En cas d'infraction,Veuillez contacter: [email protected] Supprimer.

Date de publication originale: 2021-06-13

Participation à cet articleTencent Cloud Self - media Sharing Plan,Bienvenue à la lecture,Partager ensemble.

版权声明
本文为[Moon ai]所创,转载请带上原文链接,感谢
https://pythonmana.com/2021/10/20211028160926558u.html

  1. J'ai utilisé Python pour ramper 1000 lettres d'amour pour aider mon colocataire à exprimer les fleurs de classe, mais les inverser et les inverser... C'est le secret ultime des fleurs de classe!
  2. python中列表转为矩阵后无法进行矩阵的乘法运算
  3. Python crawler Development and Learning full tutoriel 2nd Edition, banggan 100000 words [recommended Collection]
  4. Python crawler haut de gamme: microstore confus anti - décryptage
  5. La multiplication de la matrice ne peut pas être effectuée lorsque la liste est convertie en matrice en python
  6. Introduction to operators in python (Part 1)
  7. Are the dictionaries in Python ordered
  8. Introduction to dictionaries in Python
  9. List introduction in Python
  10. pandas比较两个dataframe特定数据列的数值是否相同并给出差值:使用np.where函数
  11. Python使用matplotlib绘制透明背景的可视化图像并保存透明背景的可视化结果(transparent background)
  12. Python self study notes -- basic grammar
  13. Python utilise matplotlib pour dessiner une image visuelle de l'arrière - plan transparent et enregistrer les résultats visuels de l'arrière - plan transparent
  14. Pandas compare les valeurs de deux colonnes de données spécifiques à dataframe et donne des valeurs de voyage: en utilisant la fonction np.where
  15. Comment configurer une application ASGI Django avec Postgres, nginx et uvicorn sur Ubuntu 20.04
  16. What are the advantages of Python and how to get started quickly
  17. Python self study notes -- basic data types
  18. Python code reading (Chapter 14): List Union
  19. Analyse statistique de la fonction de données des essais aléatoires Python
  20. Alien invasion project in Python application -- Aliens (Part 2)
  21. Python code reading (Chapter 14): List Union
  22. Lecture du Code Python (article 25): diviser les chaînes multilignes en listes
  23. Python self study notes -- operators
  24. Formation python - différences entre http et HTTPS
  25. Implementation of automatic timing comment function on Python CSDN platform
  26. python+tkinter+treeview子控件快捷键
  27. Raccourcis clavier pour les sous - contrôles Python + tkinter + treeview
  28. Analyse des données Python
  29. python+tkinter+treeview子控件快捷鍵
  30. Devine si je peux attraper Maotai avec la programmation python? Tout est ouvert à github
  31. À propos de pygame.display.set in Python Un petit problème avec mode ()
  32. Implementation of automatic timing comment function on Python CSDN platform
  33. python:dataframe进行iteritem遍历时如何将输出结果按照列分别输出为该列最后一行
  34. python:dataframe進行iteritem遍曆時如何將輸出結果按照列分別輸出為該列最後一行
  35. Python: comment le dataframe affiche les résultats de sortie par colonne à la dernière ligne de la colonne lors de la traversée de l'itemitem
  36. Écrivez un gadget de bureau pour votre fille préférée en python et elle dit que c'est génial!
  37. Introduction to closures in Python 3
  38. Global / nonlocal usage in Python 3
  39. Introduction to context manager in Python 3
  40. Python crawler selenium framework. You can start with these five questions | Python skill tree
  41. Common standard library random, python introductory tutorial 5 or 6 questions a day | Python skill tree
  42. It is said that Python is omnipotent. It's really good to see Liyang photography circle with Python this time
  43. 【Python 爬虫】 4、爬虫基本原理
  44. 【Python 爬蟲】 4、爬蟲基本原理
  45. 【 Python crawler】 4. Principes de base du crawler
  46. 这道python题到底应该要怎么做
  47. Que doit faire exactement ce problème Python
  48. Après l'importation des variables du module Python, les valeurs imprimées sont fixes.
  49. Nouveau singe Muzi Lee: 0 cours de formation Python de base types de hachage pour les opérations Python redis
  50. Looking at problems from a fresh perspective: analyzing selenium principle from the perspective of Python
  51. Insérez le format de date dans la base de données MySQL en python et ne l'exécutez pas.
  52. Try Python 3.10 with CONDA
  53. Répondez en python et demandez à quelqu'un de vous aider.
  54. Un simple problème de travail Python, qui ne fonctionne pas
  55. Problèmes d'écriture Python pour la boucle
  56. Comment Python exécute les commandes du programme à plusieurs reprises au lieu de quitter
  57. YYDS! Dexplot: one line of Python code to easily draw statistical charts!
  58. pandas生成的透视表如何和源数据一起保存
  59. pandas生成的透視錶如何和源數據一起保存
  60. Comment sauvegarder le tableau pivot généré par pandas avec les données sources