Dans ce didacticiel, nous montrerons comment utiliser ApiLogicServer pour créer, personnaliser et exécuter une API basée sur une base de données. API Logic Server est un conteneur Docker open source. Avec les commandes ci-dessous, vous obtenez :
- Logiciel de travail, Maintenant:
- UNE serveur d’API de base de données, pour débloquer le développement de l’interface utilisateur.
- UNE application web multi-pages, pour engager les utilisateurs professionnels – dès le début du projet.
- Logique déclarative utilisant règles uniques de type feuille de calcul — 40 fois plus concis que le code, extensible avec Python — pour une agilité commerciale remarquable.
- Personnalisable projets, en utilisant un langage et des outils standard. Opérez dans un environnement conteneurisé proprement isolé qui correspond à votre architecture de déploiement.
TL;DR – Créer une API de base de données et une application Web de base
Créez l’exemple de projet dans un minute ou deux, comme suit. Avec Docker démarré, entrez ces commandes Terminal (Windows, utilisez Powershell) :
cd ~/Desktop # directory of API Logic Server projects on local host docker network create dev-network # only required once (ignore errors if network already exists) # [Install and] Start the API Logic Server docker container docker run -it --name api_logic_server --rm --net dev-network -p 5000:5000 -p 8080:8080 -v ${PWD}:/localhost apilogicserver/api_logic_server
# (Now inside the container) ApiLogicServer create # Return for default project-name and pre-installed
demo db
ApiLogicServer run
# Return for default project-name; swagger at:
localhost:5000
Voici une démo de 5 minutes montrant l’installation, la création, l’exécution et la personnalisation.
Si vous avez installé Docker, vous pouvez facilement exécuter ce didacticiel pendant que vous lisez (pas besoin d’installer Python, et l’exécution de cette démo n’affectera pas les projets Python existants). Ce n’est pas obligatoire – de nombreuses captures d’écran sont fournies pour illustrer le processus et le code réel.
Logiciel de travail, Maintenant
Les commandes ci-dessus ont créé un projet. Nous verrons comment le personnaliser et le déboguer ci-dessous. Mais voyons d’abord ce qui fonctionne maintenant.
JSON : API avec Swagger
Votre API est instantanément prête à prendre en charge le développement de l’interface utilisateur et de l’intégration, disponible en swagger, comme indiqué ci-dessous. JSON : les API sont intéressantes car elles sont configurables par le client pour réduire le trafic réseau et minimiser les dépendances organisationnelles. Explorez l’API avec Swagger sur localhost:5000 :
Logique : règles de type tableur, étendues avec Python
La logique métier transactionnelle (dérivations et contraintes multi-tables) est une partie importante des systèmes de base de données, souvent près de la moitié. Le codage procédural prend du temps à développer et à maintenir, ce qui réduit l’agilité de l’entreprise.
ApiLogicServer fournit des règles uniques de type tableur qui réduisent la logique de transaction de 40 fois. Logic est déclaré en Python (exemple ci-dessous), et est :
- Réutilisé automatiquement : les règles sont automatiquement réutilisées pour toutes les mises à jour, éliminant ainsi les bogues courants dans lesquels la logique était codée, mais pas appelée.
- Extensible: La logique se compose de règles (voir ci-dessous) et de code Python standard.
- Multi-tables : des règles comme
sum
automatiser les transactions multi-tables. - Évolutif : les règles sont élaguées et optimisées ; par exemple, les sommes sont traitées comme des mises à jour d’ajustement sur une ligne, plutôt que comme des requêtes d’agrégation SQL coûteuses.
- Maniable: développez et déboguez vos règles dans les IDE, gérez-les dans les systèmes SCS (tels que git) en utilisant les procédures existantes.
Les 5 règles suivantes (lignes 50-68) représentent la même logique que 200 lignes de Python et correspondent directement à la « spécification de serviette de cocktail » (en bas), afin que les utilisateurs professionnels puissent les lire et les comprendre :
Qu’est-ce qui est pré-construit ?
L’API et l’application Web (ci-dessous) ont été automatiquement créé à partir de la base de données. Ainsi, vous les verriez fonctionner avec vos propres bases de données.
Pour vous permettre d’explorer la personnalisation, les règles ci-dessus ont été Pre installé pour le projet de démonstration – vous les entrez normalement en Python, en utilisant la complétion de code.
Application Web de base : multi-pages, multi-tables
Le développement de l’interface utilisateur prend du temps. C’est un problème puisque
- Un tel effort peut ne pas être justifié pour les écrans d’administration « back office », et
- Les approches agiles dépendent de la mise en place rapide de logiciels fonctionnels, pour favoriser la collaboration et l’itération.
ApiLogicServer CLI crée donc un logiciel fonctionnel maintenant: applications multi-pages et multi-tables comme indiqué ci-dessous :
- Plusieurs pages: les applications incluent 1 page par table.
- Multi-tables : les pages incluent related_views pour chaque table enfant associée et se joignent aux données parent.
- Champs favoris en premier : le premier champ affiché est « nom » ou contient « nom » (configurable).
- Jointures prédictives : le champ favori de chaque parent est affiché (nom du produit – pas l’identifiant du produit).
- Les identifiants durent : ces champs ennuyeux ne sont pas affichés sur les listes, et à la fin sur d’autres pages.
- Application de la logique : la logique est appliquée à toutes les mises à jour. Par exemple, essayez de modifier la limite de crédit du premier client à 20 et observez l’erreur.
- Cela est dû à la règle de contrainte dans
logic/declare_logic.py
sur Customer, contenant : row.Balance <= row.CreditLimit
- Cela est dû à la règle de contrainte dans
Vous pouvez l’exécuter comme ceci :
ApiLogicServer run-ui
# Return for default project-name; web app at:
localhost:8080
Personnalisable : créer, exécuter, personnaliser
Une API et une application Web sont un bon début, mais nous savons tous qu’une automatisation à 100 % n’est pas possible. Il doit y avoir des dispositions pour la personnalisation, en utilisant des langages, des outils et des approches standard.
Voyons maintenant la personnalisation. Mais d’abord, nous allons présenter l’architecture de base.
Architecture de conteneur
Comme indiqué ci-dessous, il y a généralement 2 à 3 « machines » en fonctionnement :
- Ton hôte local (en gris), où sont stockés les fichiers du projet personnalisable (le répertoire api_logic_server) et où fonctionnent vos outils de développement (IDE, etc.)
- Le Docker ApiLogicServer récipient(bleu), qui contient :
- L’ApiLogicServer, avec CLI (Command Language Interface), commandes que nous avons utilisées ci-dessus :
create
— créez des projets sur votre hôte local.run
— exécuter des projets en utilisant les différents Runtimes (Flask, API SAFRS, SQLAlchemy, Logic, Flask App Builder, etc.).
- L’ApiLogicServer, avec CLI (Command Language Interface), commandes que nous avons utilisées ci-dessus :
- Un environnement Python pour prendre en charge l’exécution et le développement à l’aide de votre IDE.
- Les base de données (violet) peut s’exécuter en tant que conteneur Docker séparé, dans votre hôte local ou (pour ce didacticiel) dans le conteneur docker ApiLogicServer
Rappelez le processus d’installation et de démarrage d’ApiLogicServer : avec Docker en cours d’exécution, utilisez une fenêtre de terminal (Windows : utilisez PowerShell) :
cd ~/Desktop # directory of API Logic Server projects on local host
docker network create dev-network # only required once (ignore errors if network already exists)
# [Install and] Start the API Logic Server docker container
docker run -it --name api_logic_server --rm --net dev-network -p 5000:5000 -p 8080:8080 -v ${PWD}:/localhost apilogicserver/api_logic_server
La dernière commande télécharge et exécute votre ApiLogicServer avec… une fenêtre Terminal (-it
), un réseau local (--net dev-network
), accès à un répertoire local où sont créés les projets (-v ${PWD}:/localhost
), et certains ports (-p 5000:5000 -p 8080:8080
).
Remarque : Docker est l’installation la plus simple, mais vous pouvez également utiliser une version locale de Python et pip install
Personnaliser, étendre et déboguer — Langage standard, IDE
Le projet créé est un projet Python standard, entièrement personnalisable à l’aide de votre IDE existant et d’autres outils de développement (par exemple, git). Par exemple, vous pouvez charger le projet dans Visual Studio Code comme suit :
- Installez VS Code 1.61 et (si nécessaire) le
shell
extension- Tu fais ne pas besoin d’installer Python ; il fonctionne à partir du conteneur
- Ouvrez le projet comme celui-ci à partir d’un terminal sur votre hôte local (pas de conteneur Docker) :
exit exit the ApiLogicServer Docker container, if running
code ~/Desktop/api_logic_server # open project in VS Code
3. Vous serez invité à installer le remote-container
prolongement, et reload
le projet dans le conteneur ; le faire
Voici le projet créé, ouvert dans VS Code :
Personnaliser le code du modèle
Le projet créé est extrêmement petit puisque le code créé définit modèles déclaratifs, plutôt que de bas niveau de procédure code. Non seulement cela le rend petit, mais cela permet également de personnaliser très facilement le comportement.
Par exemple, l’API est définie (api/expose_api_models.py
— volet de code supérieur gauche) avec des instructions comme indiqué ci-dessous. Il est immédiatement évident de savoir comment modifier ce code, par exemple, pour ne pas exposer une table donnée en tant que point de terminaison.
api.expose_object(models.Category)
api.expose_object(models.Customer)
api.expose_object(models.CustomerDemographic)
de même pour ui/basic_web_app/app/view.py
— il est clair comment contrôler quels champs sont affichés (y compris les jointures) et dans quel ordre :
class OrderDetailModelView(ModelView):
datamodel = SQLAInterface(OrderDetail)
list_columns = [
"Id", "Order.ShipName", "Product.ProductName", "UnitPrice", "Quantity"]
show_columns = [
"Id", "Order.ShipName", "Product.ProductName", "UnitPrice", "Quantity", "Discount", "Amount", "ShippedDate", "ProductId", "OrderId"]
edit_columns = [
"Id", "UnitPrice", "Quantity", "Discount", "Amount", "ShippedDate", "ProductId", "OrderId"]
add_columns = [
"Id", "UnitPrice", "Quantity", "Discount", "Amount", "ShippedDate", "ProductId", "OrderId"]
related_views = []
Étendre avec Python
Les extensions typiques incluent (explorez l’exemple de base de données par défaut pour voir des exemples) :
- Personnaliser l’API : modifier
api/customize_api.py
pour définir vos propres endpoints, en complément de ceux créés à partir du modèle - Personnaliser le modèle : modifier
customize_models.py
, par exemple - Personnaliser la logique : modifier
models/declare_logic.py
(initialement vide) pour déclarer la logique- Comme indiqué ci-dessus, l’exemple de projet de base de données par défaut contient quelques règles simples que vous pouvez explorer ; en savoir plus sur les règles de la Logic Bank
Déboguer à l’aide de votre IDE existant
Étant donné que le projet est standard, vous pouvez utiliser vos services IDE existants tels que la complétion de code et le débogage.
Pour VS Code, le projet créé comprend des pré-construits launch configurations
pour ApiLogicServer et l’application Web de base. Vous pouvez définir des points d’arrêt, examiner des variables, parcourir le code, etc.
Résumé : Logiciel de travail personnalisable, Maintenant
Dans ce didacticiel, nous avons montré comment utiliser un API Logic Server pour créer, personnaliser et exécuter une API de base de données. Logiciel de travail Maintenant à partir d’une base de données : une API et une application Web, soutenues par une logique de type tableur. Le projet est personnalisable, utilisant un langage et des outils standard, opérant dans un environnement isolé environnement de développement conteneurisé.