Die Daten der JSON-in-Kolben
Selbst nach vielen Beispiel hier & da kann ich nicht meine API-Arbeit in POST-Methode.
Hier der code dazu :
from flask import Flask, jsonify, request
@app.route('/api/v1/lists', methods=['POST'])
def add_entry():
print("p0")
content = request.get_json()
appname = content.get('title')
print(content)
print(appname)
Wenn ich die Abfrage mit curl (bei mir läuft es auf Windows):
curl.exe -i-H "Content-Type: application/json" -X POST -d '{"title":"titi"}' http://localhost:5000/api/v1/lists
curl.exe -i-H "Content-Type: application/json" -X POST -d "{"""Titel""":"""ein Buch Lesen"""}" http://localhost:5000/api/v1/lists
Habe ich immer einen 400-Fehler beim return:
HTTP/1.0 400 BAD REQUEST
Content-Type: text/html -
Content-Length: 192
Server: Werkzeug/0.12.1 Python/3.6.0
Datum: Tue, 04 Apr-2017 21:55:29 GMT
400 Bad Request
Bad Request
Der browser (oder proxy) schickte eine Anfrage, dass dieser server nicht verstehen konnte.
Ich sehe nicht, wo der Fehler ist.
Vielen Dank für Ihre Hilfe.
- Für die anderen:
POST
ing json via curl auf Windows setzt die Anführungszeichen escaped werden anders, siehe stackoverflow.com/a/12498151/882436
Du musst angemeldet sein, um einen Kommentar abzugeben.
Sogar mit dem "arbeiten" code, im Falle des if-block Fehler (wenn
value1
undvalue2
istNone
) verursachen den gleichen Fehler, da Sie nicht die Handhabung derelse
- Teil der if-block. Die korrigiert werden sollten:Natürlich möchten Sie vielleicht etwas besser als
None
als Antwort.Ihre
add_entry
- Funktion ist nicht der Rückgabe einer Antwort. Sie muss wieder etwas auch wenn es nurreturn 'OK'
.EDIT: Du bist immer noch nicht wieder alles. In
Flask
Pythonprint
Aussage ist nicht äquivalent zu dem PHP -echo
. Alleprint
tut, ist das drucken auf der Konsole. Haben Sie immer noch einen Wert zurückgeben. Wenn das, was Sie brauchen, ist die Rückkehrcontent
undappname
JSON-kodiert ist, dann fügen Siereturn json.loads({'contents': contents, 'appname': appname})
dem Ende Ihrer Funktion.
Und um es klar zu im Kolben Ansichten muss einen Wert zurückgeben. Das Python-Funktionen, die implizit return Keiner ist belanglos. Der Fehler, der passiert ist, dass die Funktion keine return-Anweisung.
Hier ein code funktioniert in meinem Fall :