私は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/21 つのアクション セットと他のアクション セットに拡張する唯一の方法はあり/api/other_work_typeますか?