API Flask Organiser ses class dans des fichiers
Résolu/Fermé
A voir également:
- API Flask Organiser ses class dans des fichiers
- Wetransfer gratuit fichiers lourd - Guide
- Renommer plusieurs fichiers - Guide
- Explorateur de fichiers - Guide
- Fichiers dat - Guide
- Les données fournies dans le fichier à télécharger peuvent être synthétisées par le tableau récapitulatif suivant. dans le fichier, générez ce tableau automatiquement (tableau croisé dynamique ou table de pilote) à partir des 4 premières colonnes. cinq valeurs manquent dans le tableau suivant. retrouvez-les dans votre tableau puis reportez-les, arrondies à l’entier le plus proche, dans la zone de réponse. ✓ - Forum Jeux vidéo
1 réponse
Pour ceux qui tomberaient sur le même os, j'ai trouvé une solution qui semble bien fonctionner. Voici la structure de mes fichiers:
myapp1/
myapp1/app.py
myapp1/__init__.py
myapp1/resources/
myapp1/resources/cars.py
myapp1/resources/msgs.py
myapp1/resources/users.py
myapp1/resources/db.py
myapp1/resources/__init__.py
Le dossier 'myapp1/resources/' contient mes différents fichiers représentant chacun une class particulière.
Je place également des fichiers '__init__.py' dans chaque dossier, je n'ai pas bien compris le fonctionnement de ces fichiers '__init__.py' mais il semblerait que cela permette à Python de traiter mes dossiers comme des Packages. Pour le moment ces fichiers sont vides, le simple fait qu'ils existent semble permettre cette histoire de Packages (à vérifier).
On a donc 3 class:
-cars
-users
-msgs
Le fichier db.py est un fichier de configuration pour communiquer avec la base de données. Il est inclus dans les class qui utilisent la BDD ainsi que dans le fichier principal 'myapp1/app.py '
Contenu de myapp1/app.py :
Contenu de myapp1/resources/cars.py :
Contenu de myapp1/resources/db.py :
Voilà tout, ce n'est peut-être pas la bonne méthode, sur ma route j'ai également croisé des réponses sur des forums qui préconisaient d'utiliser des " blueprints".
Afin d'ajouter des nouvelles class, il suffit de créer un nouveau fichier dans 'myapp1/resources/' puis de l'importer dans 'myapp1/app.py'. Enfin, il faut ajouter une ligne indiquant comment appeler la ressource depuis l'URL.
myapp1/
myapp1/app.py
myapp1/__init__.py
myapp1/resources/
myapp1/resources/cars.py
myapp1/resources/msgs.py
myapp1/resources/users.py
myapp1/resources/db.py
myapp1/resources/__init__.py
Le dossier 'myapp1/resources/' contient mes différents fichiers représentant chacun une class particulière.
Je place également des fichiers '__init__.py' dans chaque dossier, je n'ai pas bien compris le fonctionnement de ces fichiers '__init__.py' mais il semblerait que cela permette à Python de traiter mes dossiers comme des Packages. Pour le moment ces fichiers sont vides, le simple fait qu'ils existent semble permettre cette histoire de Packages (à vérifier).
On a donc 3 class:
-cars
-users
-msgs
Le fichier db.py est un fichier de configuration pour communiquer avec la base de données. Il est inclus dans les class qui utilisent la BDD ainsi que dans le fichier principal 'myapp1/app.py '
Contenu de myapp1/app.py :
from flask import Flask from flask.ext.mysql import MySQL from flask import jsonify from flask_restful import Api, Resource, reqparse from resources.users import User from resources.msgs import Msg from resources.cars import Car from resources.db import app, api api.add_resource(User, "/user/<string:name>") api.add_resource(Msg, "/msg/<string:name>") api.add_resource(Car, "/car/<string:name>") #app.run(debug=True) app.run(host='0.0.0.0')
Contenu de myapp1/resources/cars.py :
from flask_restful import Resource from resources.db import mysql class Car(Resource): def get(self, name): conn = mysql.connect() cursor =conn.cursor() cursor.callproc('get_car_from_id',(name)) data = cursor.fetchall() if(cursor.rowcount < 1): return "no lines... oups.. rien trouve :(" return data
Contenu de myapp1/resources/db.py :
from flask import Flask from flask.ext.mysql import MySQL from flask_restful import Api, Resource, reqparse app = Flask(__name__) api = Api(app) mysql = MySQL() # MySQL configurations app.config['MYSQL_DATABASE_USER'] = "dbuser" app.config['MYSQL_DATABASE_PASSWORD'] = "dbpass" app.config['MYSQL_DATABASE_DB'] = "app_myapp" app.config['MYSQL_DATABASE_HOST'] = "localhost" mysql.init_app(app)
Voilà tout, ce n'est peut-être pas la bonne méthode, sur ma route j'ai également croisé des réponses sur des forums qui préconisaient d'utiliser des " blueprints".
Afin d'ajouter des nouvelles class, il suffit de créer un nouveau fichier dans 'myapp1/resources/' puis de l'importer dans 'myapp1/app.py'. Enfin, il faut ajouter une ligne indiquant comment appeler la ressource depuis l'URL.
api.add_resource(...)