Hi Leute
Bin erst vor kurzem zum Raspberry Pi und somit Python gekommen. (also blutiger Anfänger)
Habe aber bisher Erfahrungen mit C++, JavaScript, HTML und CSS, bin daher kein Programmier-Neuling.
Nun aber zum Problem:
Habe mich nun auch in Backbone JS als MVC Framework eingearbeitet und eine Homepage erstellt, bei der ich mit Hilfe von REST, also GET und POST Messages Daten (im JSON Format) vom Server holen bzw. auf ihm speichern möchte.
In diesem Fall dient mir der Raspberry Pi mit WebIOPi und laufendem Python-Skript als Webserver und der Online-Zugriff erfolgt per Weaved DynDNS Service.
Das Problem das ich jetzt aber habe ist, serverseitig ein Python-Skript so zu schreiben, dass dieses auf einfache POST und GET Messages entsprechend reagiert. (also ein Server BACKEND)
Die Messages treffen zwar derzeit am RPI-Server ein, Python reagiert aber verständlicher Weise durch fehlende Implementierung nicht darauf.
Ich habe bisher im Internet herumgegooglet und bin so auf Socketserver und Flask gestoßen. Weiß aber nicht welches ich am Besten für die Umsetzung nehmen sollte.
Bin in Sachen BACKEND-Programmierung absoluter Neuling.
Wie ihr seht habe ich schon ein paar Sachen ausprobiert.... aber bisher leider ohne Erfolg.
Könntet ihr mir eventuell irgendwelche Tips geben die mir weiterhelfen würden.
Es geht lediglich um das Entgegennehmen der POST- und GET-Messages und das Reagieren darauf. Welche Zeilen brauche ich da minimal ?
Was Python dann mit den Daten macht kann ich ja dann selbst umsetzen.
Vielen Dank im voraus !
mfg
Zauche
----------------------------------------------------------------------------
VARIANTE 1:
----------------------------------------------------------------------------
import socketserver
import json
class MyTCPServer(socketserver.ThreadingTCPServer):
allow_reuse_address = True
class MyTCPServerHandler(socketserver.BaseRequestHandler):
def handle(self):
try:
# data = json.loads(self.request.recv(1024).decode('UTF-8').strip())
data = json.loads(self.request.recv(1024).strip())
# process the data, i.e. print it:
print(data)
# send some 'ok' back
# self.request.sendall(bytes(json.dumps({'return':'ok'}), 'UTF-8'))
self.request.sendall(json.dumps({'return':'ok'}))
# except Exception as e:
except Exception as e:
print("Exception while receiving message: ", e)
#server = MyTCPServer(('10.0.0.6', 8000), MyTCPServerHandler)
server = MyTCPServer(('0.0.0.0', 8000), MyTCPServerHandler) # 0.0.0.0 accept connection from anywhere
server.serve_forever()
----------------------------------------------------------------------------
VARIANTE 2:
----------------------------------------------------------------------------
import unirest
import urllib2
from urllib2 import URLError
try:
urllib2.urlopen("http://www.google.com")
except urllib2.HTTPError:
print ("HTTP Error")
except urllib2.URLError:
print ("URL Error")
### ASYNCHRONOUS REQUESTS
def callback_function(response):
response.code # The HTTP status code
response.headers # The HTTP headers
response.body # The parsed response
response.raw_body # The unparsed response
thread = unirest.post("http://10.0.0.6:8000/rooms/",
headers={"Accept" : "application/json" },
params={ "parameter" : 23, "foo" : "bar" })
response = unirest.get("http://10.0.0.6:8000/rooms/{}".format(value),
headers={ "X-Mashape-Key": "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX" })
###print response.body
Alles anzeigen