JSON von SimpleHTTPServer lesen Daten posten
Ich versuche eine einfache REST-server mit python SimpleHTTPServer. Ich habe ein problem beim Lesen von Daten aus der post-Meldung. Bitte lassen Sie mich wissen, wenn ich es richtig machen.
from SimpleHTTPServer import SimpleHTTPRequestHandler
import SocketServer
import simplejson
class S(SimpleHTTPRequestHandler):
def _set_headers(self):
self.send_response(200)
self.send_header('Content-type', 'text/html')
self.end_headers()
def do_GET(self):
print "got get request %s" % (self.path)
if self.path == '/':
self.path = '/index.html'
return SimpleHTTPRequestHandler.do_GET(self)
def do_POST(self):
print "got post!!"
content_len = int(self.headers.getheader('content-length', 0))
post_body = self.rfile.read(content_len)
test_data = simplejson.loads(post_body)
print "post_body(%s)" % (test_data)
return SimpleHTTPRequestHandler.do_POST(self)
def run(handler_class=S, port=80):
httpd = SocketServer.TCPServer(("", port), handler_class)
print 'Starting httpd...'
httpd.serve_forever()
Den index.html Datei
<html>
<title>JSON TEST PAGE</title>
<head>
<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script>
<script type="text/javascript">
JSONTest = function() {
var resultDiv = $("#resultDivContainer");
$.ajax({
url: "http://128.107.138.51:8080",
type: "POST",
data: {txt1: $("#json_text").val()},
dataType: "json",
success: function (result) {
switch (result) {
case true:
processResponse(result);
break;
default:
resultDiv.html(result);
}
},
error: function (xhr, ajaxOptions, thrownError) {
alert(xhr.status);
alert(thrownError);
}
});
};
</script>
</head>
<body>
<h1>My Web Page</h1>
<div id="resultDivContainer"></div>
<form>
<textarea name="json_text" id="json_text" rows="50" cols="80">
[{"resources": {"dut": "any_ts", "endpoint1": "endpoint", "endpoint2": "endpoint"}},
{"action": "create_conference", "serverName": "dut", "confName": "GURU_TEST"}]
</textarea>
<button type="button" onclick="JSONTest()">Generate Test</button>
</form>
</body>
</html>
Den SimpleJson schlägt fehl, zum laden der json-von der POST-Meldung. Ich bin nicht vertraut mit web-Codierung, und ich bin auch nicht sicher, ob das, was ich Tue, ist richtig für das erstellen eines einfachen REST-API-server.
Ich Schätze Ihre Hilfe.
InformationsquelleAutor der Frage Guru Govindan | 2015-07-12
Du musst angemeldet sein, um einen Kommentar abzugeben.
Dank matthewatabet für die klein Idee. Ich dachte mir, eine Möglichkeit zu implementieren, mit BaseHTTPHandler. Der code unten.
Und die entsprechende html-Seite
InformationsquelleAutor der Antwort Guru Govindan
SimpleHTTPRequestHandler POST nicht unterstützt. Es ist in der Tat sehr einfach. Check-out Klein, auf dessen server ein bisschen mehr mit vollem Funktionsumfang.
Gibt es ein Beispiel für ein json-PUT (ziemlich in der Nähe POST) hier:
https://pypi.python.org/pypi/klein/0.2.3
InformationsquelleAutor der Antwort matthewatabet