私はFlaskでクラスベースのビューを使用して、CRUD REST APIを作成し、そのadd_url_rule
ようなものを使用してルートを登録しています...
class GenericAPI(MethodView):
def get(self, item_group, item_id):
...
def post(self, item_group, item_id):
...
...
api_view = GenericAPI.as_view('apps_api')
app.add_url_rule('/api/<item_group>', defaults={'item_id': None},
view_func=api_view, methods=['GET',])
app.add_url_rule('/api/<item_group>/<item_id>',
view_func=api_view, methods=['GET',])
app.add_url_rule('/api/<item_group>/add',
view_func=api_view, methods=['POST',])
app.add_url_rule('/api/<item_group>/<item_id>/edit',
view_func=api_view, methods=['PUT',])
app.add_url_rule('/api/<item_group>/<item_id>/delete',
view_func=api_view, methods=['DELETE',])
item_group
および を使用したエントリに基づいて、特定のデータベース テーブルを処理しますitem_id
。したがって、 がある場合/api/person
、 person テーブルのエントリがリストされます。または、持っている場合は/api/equipment/2
、機器テーブルの ID 2 の行を取得します。これらのタスクはたくさんありますが、基本的にはすべて CRUD のみが必要です。
/api/analysis/summarize
しかし、理論的にはオンザフライで機能する関数を呼び出すような他の URL がある場合に、ルーティングをオーバーライドしたい場合はどうすればよいでしょうか。それを行う方法はありますか?
/api/db/person
または、URLを/api/db/equipment/2
1 つのアクション セットと他のアクション セットに拡張する唯一の方法はあり/api/other_work_type
ますか?