Python-HTTP-server senden, JSON-Antwort

Was ich tun

Ich versuche, um meine Hände schmutzig mit python und im machen ein sehr einfacher http-server, so kann ich das senden von Befehlen an meinen arduino über serial. Im überprüfen Sie die Befehle, wie ich sgould und alles funktioniert wie es ahould werden.

Das Konzept

Im mit dem HTTP-server in der Reihenfolge zu erhalten POST Anfragen von remote-Computern und smartphones und ausführen von code mit meinem arduino über die Serielle.
Es hat einige Coole features wie Benutzer-und Benutzer-Berechtigungsstufen.

Das problem

Ich würde gerne feedback geben, wenn eine Anfrage kommt. Speziell JSON-feedback mit dem Ergebnis der Ausführung wie Fehler, Notizen und Erfolg.
Im denken, um ein Wörterbuch in python und fügen Sie, was ich will zurück zu senden, die das frontend dann enclode es in json und senden Sie es als eine Antwort. (So etwas wie der php - json_encode() nimmt ein array und gibt json)

Den code

import SimpleHTTPServer
import SocketServer
import logging
import cgi
import time
import sys

class ServerHandler(SimpleHTTPServer.SimpleHTTPRequestHandler):

def do_GET(self):
    logging.warning("======= GET STARTED =======")
    logging.warning(self.headers)
    SimpleHTTPServer.SimpleHTTPRequestHandler.do_GET(self)

def do_POST(self):
    form = cgi.FieldStorage(
        fp=self.rfile,
        headers=self.headers,
        environ={'REQUEST_METHOD':'POST',
                 'CONTENT_TYPE':self.headers['Content-Type'],
                 })

    if self.check_auth(username, passcode):
        self.send_response(200)
        self.send_header('Content-Type', 'application/json')
        self.end_headers()
    else:
        print cur_time + "failed to login " + form.list[0].name + form.list[0].value
        self.send_response(500)
        self.send_header('Content-Type', 'application/json')
        self.end_headers()

SimpleHTTPServer.SimpleHTTPRequestHandler.do_GET(self)
Handler = ServerHandler
httpd = SocketServer.TCPServer(("", PORT), Handler)
httpd.serve_forever()

Habe ich versucht zu minimieren, den code, so können Sie die klare "HTTP" - Teil.

Wie Sie sehen können im das senden der Header und der response-Typ (200 für eine erfolgreiche login-und 500, - für die erfolglosen login)

Ziele, die ich brauchen, um zu erreichen

Den komplett code als gist: https://gist.github.com/FlevasGR/1170d2ea47d851bfe024

Ich weiß, das ist vielleicht nicht die beste Sie jemals seens in Ihrem Leben, aber seine meinem ersten Zeit mit dem schreiben in Python 🙂

Schreibe einen Kommentar