2

私は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ますか?

4

1 に答える 1