2015-03-26 4 views
0

У меня есть метод в моем приложении, который принимает CSV из нескольких сотен пользователей, набирает номера телефонов, различающихся по длине, но до нескольких тысяч символов. При попытке выполнить метод, как:Rails Request Uri Too Large

localhost:3000/getActivatedFriends/phoneNum1,phoneNum2,phoneNum3...phoneNum350...etc

ошибка ниже значилось:

Request-URI Too Large 

WEBrick::HTTPStatus::RequestURITooLarge 

На моем персональном устройстве, количество символов в CSV является 2868. Как я могу обойти эту проблему ограничение или, возможно, установить неограниченную длину в localhost и Heroku?

запрос действия контроллера: (пожалуйста, игнорировать возможные инъекции SQL, так как это просто в Развитию)

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]+,?)+/ } 

ответ

0

Используйте запрос POST вместо этого, что должен исправить эту проблему.

+0

Как вы можете видеть по заданному маршруту: 'получить '/ getActivatedFriends /: friends_phone_number_csv', к: 'запросы # getActivatedFriends', через: ** 'пост' **, ограничений: {friends_phone_number_csv:/([ 0-9] + ,?) + /} 'Я уже определил его как почтовый запрос ... – Sauron

+0

Не это ли запрос на получение запроса на постконтроллер? Я думаю, что проблема, с которой вы сталкиваетесь, связана с максимальным размером запроса на получение. Большинство браузеров (и серверов) имеют максимальную длину URL-адреса, если память служит, это 2048, как реализовано IE. –

+0

Как это реализовать? Могу ли я расслоить ...? – Sauron