HTTP Server / Rest / verteilte Pfade

Django, Flask, Bottle, WSGI, CGI…
homerunjack
User
Beiträge: 22
Registriert: Donnerstag 21. Juli 2016, 12:12

HTTP Server / Rest / verteilte Pfade

Beitragvon homerunjack » Mittwoch 19. Juli 2017, 08:54

Hallo,

ich habe eine Frage. Ich würde gerne eine Webapplikation mit Python+Flask und Angular2 bauen. Die Verknüpfung soll über einen HttpServer laufen.

Ich habe jetzt folgendes Stück Code:

  1. from flask import Flask, request
  2. from flask_restful import Resource, Api
  3. from flask.ext.jsonpify import jsonify
  4.  
  5. app = Flask(__name__)
  6. api = Api(app)
  7.  
  8.  
  9. # Http Rest API
  10. class Pfad1(Resource):
  11.     def get(self):
  12.         return jsonify({'test': 'Test'})
  13.  
  14. class Pfad1_Variable(Resource):
  15.     def get(self, variable_id):
  16.  
  17.         result = {'test': 'Test mit Variable'}
  18.         return jsonify(result)
  19.  
  20. # Registrierung der Pfade
  21. api.add_resource(Pfad1, '/pfad1')  # Route_1
  22. api.add_resource(Pfad1_Variable, '/pfad1/<variable_id>')  # Route_3
  23.  
  24. # Webserver starten
  25. if __name__ == '__main__':
  26.     app.run(port='5002')


Wie kann ich alles so aufbauen, dass ich die API-Funktionen und den Server mit den Registrierungen der Ressourcen trennen kann.

Sozusagen:

main.py
--> Package 1 (beinhaltet Http Rest API Klassen (Pfad1, Pfad1_Variable))
--> Package 2 (beinhaltet weitere API Klassen)
--> Package HttpServer (Bekommt Klassen der anderen Packages, z.B. durch eine get_hooks() Funktion (Rest-Pfad und Klasse) und registriert diese dann???

Gibt es da eine übliche Vorgehensweise wie man eine solche Web-API aufbaut, um auch die eigenen Funktionen über mehrere Dateien/Packages zu verteilen?

Ich hoffe ihr könnt mir ein paar Tipps geben. Danke.
Zuletzt geändert von Anonymous am Mittwoch 19. Juli 2017, 09:44, insgesamt 1-mal geändert.
Grund: Quelltext in Python-Codebox-Tags gesetzt.
Benutzeravatar
noisefloor
User
Beiträge: 2235
Registriert: Mittwoch 17. Oktober 2007, 21:40
Wohnort: Görgeshausen
Kontaktdaten:

Re: HTTP Server / Rest / verteilte Pfade

Beitragvon noisefloor » Mittwoch 19. Juli 2017, 19:11

Hallo,

so ganz durchblicke ich die Frage nicht, also was dein Ziel ist.

Grundsätzlich kannst du das alles, auf beliebig viele Module verteile, die du dann an geeigneter Stelle importierst (z.B. in der Python-Datei, die den HttpServer enthält).

Ein konkret sinnvoll Aufteilung hängt dann davon ab, wie dein Programm bzw. deine Klassen konkret aussehen.

Gruß, noisefloor
homerunjack
User
Beiträge: 22
Registriert: Donnerstag 21. Juli 2016, 12:12

Re: HTTP Server / Rest / verteilte Pfade

Beitragvon homerunjack » Freitag 21. Juli 2017, 14:42

Hallo,

ja, ich hatte einen mega Denkfehler. Die selbsterstellten Python Packages kann man ja überall verwenden :-)

Jedoch ist es schwierig ein erzeugtes Objekt in einer Baumstruktur von Zweig 1 auf Zweig 2 zu bekommen. Gibt es da einen Workaround?

Beispiel:

main.py
--> package 1 (Datenbankmodell)
---> sub1
----> sub1 erzeugt Objekt X = Datenbankverbindung
---> sub2

--> package 2
---> Webserver
----> Anzeige von Daten aus DB

--> package 3
---> Archivierung
----> Daten export aus Datenbank

Wie bekomme ich das schon erzeugte Objekt X in den Webserver, wenn man X an mehreren Stellen benötigt?
BlackJack

Re: HTTP Server / Rest / verteilte Pfade

Beitragvon BlackJack » Freitag 21. Juli 2017, 16:29

@homerunjack: Man ruft im Webserver die Funktion aus dem Datenbankmodell auf die das Objekt erstellt‽ Was man nicht macht, nur so als Hinweis, ist die Datenbankverbindung auf Modulebene erstellen so dass das schon beim importieren des Moduls passiert. Das wären globale Variablen, die alle möglichen Probleme nach sich ziehen.

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder