Python RESTful Service mit web.py (+models & Controller)

Django, Flask, Bottle, WSGI, CGI…
Antworten
Doomt
User
Beiträge: 2
Registriert: Dienstag 23. September 2014, 07:56

Guten Tag,

Ich bin neu in diesem Forum und habe durch die Suche nichts gefunden weil mir das "py" bei "web.py" ignoriert.

Ich hoffe wirklich dass ich hier richtig bin und falls ich irgendwas beim Posten falsch gemacht habe, oder regeln missachtet habe oder sonstiges dann bitte ich, mir dies mitzuteilen.

Ich würde ein wenig Hilfe beim entwicklen eines RESTful WebService in Python welcher eine Datenbank Schnittstelle ist.

Ich möchte mir eine Datenbank Schnittstelle basteln.

Ich will folgende Kriterien haben:
-) RESTful Service + pretty URL (durch Web.py bereits abgedeckt)
-) models
* Datenbank verbindung
* Validierung
* Einschränkung was upgedated werden darf
-) controller
* enthält die GET, PUT und POST Methoden welche auf die Models zugreifen ( bestimmt was bei welcher URL passiert )
* später vielleicht sogar Token oder Key validierung zwecks Security und erlaubnis nur für angemeldete User zB

Mein Enviroment:
* ESXi
- 1x db-server centOS 6
. Mysql database
- 1x web-server centOS 6
. httpd Web-Server mit vHosts

Mein Python projekt aufbau wäre folgender:
/db.py oder /database/db.py
/main.py
/controller/*
/models/*

ein lauffähiges web.py REST Service habe ich bereits, allerdings bringe ich das ganze mit den Models und Controller nicht schön hin, weil ich den import irgendwie komisch machen muss..

Mein Python liegt ein wenig zurück, außerdem habe ich noch nie python im Web verwendet.
Mein Bruder hilft mir hier ein wenig mit dem einrichten, alelrdings hat der nicht besonders viel Zeit also entwickle ich es selbst weiter.

in der Definition des vHosts wird wsgi aktiviert soweit ich mich nicht täusche, muss ich hier rigendwas besonderes angeben, dass python ein normales Import von modulen schafft ohne dass ich mit sys und os den path erst hinzufügen muss? das ist für mich unsauber geschrieben, wenn der Path da von mir in jeder py-datei geschrieben wird...
BlackJack

@Doomt: Bezüglich der Importprobleme: Ein Projekt aus mehreren Modulen würde ich grundsätzlich in ein Package stecken und am besten alle Importe absolut über das Package machen. Dann muss nur der Pfad in dem sich das Package befindet im Suchpfad für Module sein, und es gibt nicht die Gefahr von Namenskollisionen.

Wenn das Package nicht ”global” installiert ist, dann muss man in der Tat in der Regel dafür sorgen das der Pfad dorthin in der WSGI-Datei den Suchpfaden hinzugefügt wird. Der Pfad muss dazu nicht in die Datei geschrieben werden, denn man kann den Pfad wo ein Modul liegt dynamisch ermitteln: (fast) jedes Modul hat ein `__file__`-Attribut wo der Pfad + Dateiname drin steht. Da kann man dann den des Packages nehmen und den Pfad-Anteil mit `os.path.dirname()` nehmen und dass Ergebnis dann den Suchpfaden hinzufügen.
Doomt
User
Beiträge: 2
Registriert: Dienstag 23. September 2014, 07:56

Hi, danke für deine Antwort,

also mein Aufbau ist derzeit, "models" & "controller" wären packages und falls notwendig würde die "db" Verbindung auch in ein package wandern

Dann werd ich wohl mit meinen System administrator reden müssen wegen hinzufügen der packages zu dem vHost pfad, glaube irgendwo gelesen zu haben dass man dort alle packages hinzufügen muss damit python diese ohne Pfad findet.

Den Pfad hätte ich eh mit den von dir erwähnten Variablen hinzugefügt, nur finde ich diese Variante etwas unsauber.
Antworten