Sinatra で GET リクエストを処理し、同じサーバーで別のボディで PATCH リクエストを行う方法はありますか? ユーザーがリクエストを行い、サーバーがそれを?GET /clean_beautiful_api
にリダイレクトします。PATCH /dirty/clogged_api_url_1?crap=2 "{request_body: 1}"
機能に干渉することなくレガシー API をクリーンアップしたい。
私が正しく理解していれば、最も簡単な方法は、に使用されるブロックをpatch
ヘルパーに抽出することです。
patch "/dirty/clogged_api_url_1"
crap= params[:crap]
end
に:
helpers do
def patch_instead( params={} )
# whatever you want to do in here
crap= params[:crap]
end
end
get "/clean_beautiful_api" do
patch_instead( params.merge(request_body: 1) )
end
patch "/dirty/clogged_api_url_1"
patch_instead( params )
end
または、ラムダを使用できます...
Patch_instead = ->( params={} ) {
# whatever you want to do in here
crap= params[:crap]
}
get "/clean_beautiful_api" do
Patch_instead.call( params.merge(request_body: 1) )
end
# you get the picture
主なことは、メソッドを別の場所に抽出してから呼び出すことです。
編集:を介して Rack インターフェイスを使用して内部的に別のルートをトリガーcall
することもできます。