送信されたフォームからREST APIにデータをリダイレクトする適切な方法が見つかりません。フォーム(wtforms)からREST API(フラスコレスレス)にPOSTリクエストを正しくリダイレクト/送信する方法はありますか?
現在、以下の例のように、 "POST"メソッドはビュー/ルートで処理されます(ルート "add_person()"を参照)。
私のサンプルデータモデル(SQLAlchemyのベース):HTMLを経由してレンダリングするための
class Person(db.Model):
id = db.Column(db.Integer, primary_key=True)
name = db.Column(db.String(20))
フォーム(wtformsベース):
class PersonForm(FlaskForm):
name = TextField("Person name", validators=[DataRequired()])
ビュー/ルート宣言:
@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テンプレート:
<form method="POST" action="/add_person">
{{ form.csrf_token }}
{{ form.name.label }} {{ form.name(size=20) }}
<input type="submit" value="Submit">
</form>
今、データベース/ CRUD関連のアクションをREST APIに委譲したいと思います。
"人物"データモデル用に生成されたAPIエンドポイントは、 "/api/person"です。
"/add_person"
:私はから、フォームの「アクション」を切り替えると
は
"/api/person",
、私はAPIのURLにリダイレクトしていますので、私はそれがあることを行うための適切な方法ではないと思います。
私はまだビュー/ルート処理を使用して、 "Person"オブジェクトを永続させる代わりにPOST API呼び出しを行うべきだと思います。これは一番クリーンなソリューションですか?私はこれにどのようにアプローチできますか?