Недавно я хотел начать внедрять API на своем веб-сайте, но я столкнулся с некоторыми проблемами, связанными с проверками, из-за недостатка знаний о том, как правильно отправлять данные JSON с помощью Ruby on Rails.В прошлом я работал с некоторыми API-интерфейсами и JSON, но впервые я сделал это одновременно, и мой опыт работы с RoR по-прежнему отсутствует.
Моим первым инстинктом было просто объединить параметры в URL и, увидев более положительный (хотя все еще неполный) ответ JSON от API, я подумал, что на правильном пути, но после неудачной попытки получитьуспешный ответ Я начал копаться в том, что я отправлял, именно тогда я заметил две проблемы.
Первая проблема заключалась в том, что внутри URL была конфиденциальная информация, такая как мой clientID, информация о покупке, такая как цена и описание,вместе с секретным ключом, зашифрованным с помощью MD5 и небольшим количеством соли для шифрования, но согласно документации это безопасно и просто для сравнения с полученной от сервера информацией, так что в целом я не слишком беспокоился о компрометации такой информации.Тем не менее я хотел улучшить свой код и защитить как можно больше информации.
Моя вторая проблема была более существенной, я заметил, что передаваемая информация была неполной из-за ограниченного пространства в параметрах URL.
Тогда я понял, что что-то не так делаю, поэтому я начал искать альтернативы, желательно с ответом POST, однако мне все еще не хватает знаний о том, как правильно отправлять параметры с помощью POST, и информация оставалась, когда япытался использовать формы, еще хуже то, что казалось, что параметры, которые я отправлял, вышли пустыми на другом конце, в отличие от моих предыдущих попыток, поэтому я начал копать в них больше.
Затем я обнаружил, что помощник link_to можетотправить параметры, но после некоторого тестирования это не сработало, и затем я обнаружил, что для отправки параметров на внешние сайты с рельсами, предложенный метод состоял в том, чтобы объединить параметры в URL, поэтому я вернулся на полный цикл.
Так что мой вопрос будет, как вы отправляетепараметры для внешнего веб-сайта (желательно, сохраняя всю информацию как можно более безопасным) без формы (поскольку вся информация была ранее заполнена в предыдущей форме) в рельсах?
Хотя я работал с обоимиAPI и JSON раньше, они все еще являются предметами. Мне пока не очень удобно с ними работать, и в какой-то степени я все еще многому учусь в RoR.
Это был код (настоящий выглядит немногодругой) который дал мне больше всего результатов:
Мой контроллер order_controller.rb
def confirm_order
#Here I group all the parameters I'll need
@payment_params = []
description = "create_"+ @order.name.gsub(' ','_')
device_info = "WEB"
currency = @order.currency
fee = @order.price
#this was to concatenate the url, previouly I had the name of each parameter and the "&" taken into account, the response was different as I added each.
@payment_params << description << device_info << currency << fee
end
И, на мой взгляд, verify_order.html.erb что-то вроде
<a href= <%="https://payexample/something/order?"+ @payment_params%> >Confirm order</a>
Любое понимание приветствуется, но сейчас я действительно не знаю, как вообще подойти к вопросу, поскольку я исчерпал все, что я выучил.