重定向Sinatra请求更改方法和正文

时间:2013-03-19 13:24:55

标签: rest redirect sinatra

有没有办法在Sinatra上处理GET请求并在同一台服务器上使用不同的主体发出PATCH请求?用户发出请求GET /clean_beautiful_api,服务器将其重定向到PATCH /dirty/clogged_api_url_1?crap=2 "{request_body: 1}"

我希望在不干扰功能的情况下清理旧版API。

1 个答案:

答案 0 :(得分:0)

如果我理解正确,最简单的方法是将用于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

或者你可以使用lambda ......

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

主要是将方法提取到其他地方,然后调用它。


修改:您还可以call通过{{1}}。