Ich kann keine geeignete Methode finden, um Daten von einem übermittelten Formular an eine REST-API umzuleiten.Wie wird die POST-Anfrage von einem Formular (wtforms) korrekt an eine REST api (flaschenruhig) weitergeleitet?
Derzeit - wie im Beispiel unten - wird die "POST" -Methode in der Ansicht/Route behandelt (siehe Route "add_person()").
Mein Beispieldatenmodell (SQLAlchemy-based):
class Person(db.Model):
id = db.Column(db.Integer, primary_key=True)
name = db.Column(db.String(20))
Formular für über HTML-Rendering (wtforms-basiert):
class PersonForm(FlaskForm):
name = TextField("Person name", validators=[DataRequired()])
Ansicht/Route Erklärung:
@views.route('add_person', methods=["GET", "POST"])
def add_person():
form = PersonForm()
if request.method == 'POST' and form.validate_on_submit():
person = Person()
person.name = form.name.data
db.session.add(person)
db.session.commit()
return redirect(url_for('view.add_person'))
return render_template('person_add.html', form=form)
HTML-Vorlage:
<form method="POST" action="/add_person">
{{ form.csrf_token }}
{{ form.name.label }} {{ form.name(size=20) }}
<input type="submit" value="Submit">
</form>
Jetzt möchte ich Datenbank/CRUD-bezogene Aktionen an eine REST-API delegieren.
Der API-Endpunkt, der für ein Datenmodell "Person" generiert wird, lautet: "/api/person".
Wenn ich wechsle Form der "action" aus:
"/add_person"
zu:
"/api/person",
dann auf die API-URL umgeleitet ich, so dass ich denke, das ist nicht eine richtige Art und Weise zu tun, dass .
Ich denke, ich sollte immer noch die Ansicht/Route Handhabung und machen Sie einen POST-API-Aufruf dort, anstatt das "Person" -Objekt persistent. Ist das die sauberste Lösung? Wie könnte ich das angehen?