Ruby on rails Rails请求Uri太大
我在我的应用程序中有一种方法,它可以接受数百个用户联系人电话号码的CSV,长度不同,但最长可达数千个字符。尝试按以下方式执行该方法时:Ruby on rails Rails请求Uri太大,ruby-on-rails,csv,heroku,uri,Ruby On Rails,Csv,Heroku,Uri,我在我的应用程序中有一种方法,它可以接受数百个用户联系人电话号码的CSV,长度不同,但最长可达数千个字符。尝试按以下方式执行该方法时: localhost:3000/getActivatedFriends/phoneNum1、phoneNum2、phoneNum3…phoneNum350…等 出现以下错误: Request-URI Too Large WEBrick::HTTPStatus::RequestURITooLarge 在我的个人设备上,CSV中的字符数为2868。我怎样才能绕过这
localhost:3000/getActivatedFriends/phoneNum1、phoneNum2、phoneNum3…phoneNum350…等
出现以下错误:
Request-URI Too Large
WEBrick::HTTPStatus::RequestURITooLarge
在我的个人设备上,CSV中的字符数为2868。我怎样才能绕过这个限制,或者在localhost和Heroku中设置为无限长
请求控制器操作:
(请忽略可能的SQL注入,因为这只是在开发中)
铁路路线:
改为使用POST请求,这将解决问题。正如您通过定义的路径所看到的:
get'/getActivatedFriends/:friends\u phone\u number\u csv',to:'requests\getActivatedFriends',via:**'POST'**,约束:{friends\u phone\u number\u csv:/([0-9]+,?)+/}
我已经将其定义为post请求……这不是转发给post控制器的get请求吗?我认为您遇到的问题与get请求的最大大小有关。大多数浏览器(和服务器)都有一个最大url长度,如果内存可用的话,这是IE实现的2048。我如何实现这个?我可以捆绑…?为什么你不能这样做:post'/getActivatedFriends/:friends\u phone\u number\u csv'…
如果我似乎在向这个方向推进,很抱歉,但在这个实例中,你真的应该使用post而不是get。问题是我需要它是get,因为我需要在执行查询后检索数据
def getActivatedFriends
@results = User.find_by_sql("SELECT
a.id
, a.username
, a.phoneNumber
FROM users a
WHERE phoneNumber in (" + params[:friends_phone_number_csv].to_s + ") and
removed = 0 and
is_user = 1;")
respond_to do |format|
format.html
format.json { render json: { friends_match: @results }}
end
end
get '/getActivatedFriends/:friends_phone_number_csv',
to: 'requests#getActivatedFriends', via: 'post',
constraints: { friends_phone_number_csv: /([0-9]+,?)+/ }