Тело запроса изменяется?Или не переведено правильно - PullRequest
0 голосов
/ 11 октября 2018

Я отправляю почтовый запрос из приложения Rails в приложение ExpressJS.В почтальоне это работает, однако, когда я отправляю запрос на публикацию из приложения Rails, параметры выглядят хорошо на конце рельсов, но затем, когда приложение ExpressJS получает их, они отличаются ??В частности, во вложенных хэшах (forms_list).Помогите.Вот данные:

Это параметры рельсов:

{:respond_url=>"http://localhost:3000/api/v1/crawls/rover_page", :error_url=>"http://localhost:3000/api/v1/crawls/rover_error", :crawl_id=>"5bbf971e0928538630743eb8", :dimension_id=>"eda510527346f84479a6", :next_page=>"", :back_button=>"", :start_url=>"https://hrlb.oregon.gov/bspa/licenseelookup/", :forms_list=>[{"select"=>{"//td[select]/select"=>"lastname"}, "text_field"=>{"//td[2]/input[1]"=>"bac"}}], :clicks_list=>["//input[@type='submit']"], :links_selector=>"//table[2]//tr[td[a]]//td[1]/a", :command_list=>["start_url", "form", "click", "record_links"]}

Они отправляются с RestClient следующим образом:

new_crawl = RestClient.post("#{ENV['ROVER_URL']}/crawl/new_crawl", params)

Это параметры отправляются почтальономэта работа:

{"respond_url": "http://localhost:3003/api/v1/crawls/rover_page",
"error_url": "http://localhost:3003/api/v1/crawls/rover_error",
"crawl_id": "5bbcfd36092853736bc872d7",
"dimension_id": "123",
"next_page": "",
"back_button": "",
"start_url":"https://hrlb.oregon.gov/bspa/licenseelookup/",
"forms_list":[{"text_field":{"//td[2]/input[1]": "bac"}, "select": {"//td[select]/select": "lastname"}}],
"clicks_list": ["//input[@type='submit']"],
"links_selector": "//table[2]//tr[td[a]]//td[1]/a",
"command_list": ["start_url", "form", "click", "record_links"]
}

И вот скриншот того, как это интерпретируется на стороне ExpressJS:

ExpressJS data interpreted - WRONG

И ЭТОкак должны выглядеть данные (это было отправлено с данными почтальона):

ExpressJS data interpreted - Correctly

1 Ответ

0 голосов
/ 11 октября 2018

Я бы обратил мое внимание на наличие действительных имен полей JSON.В частности, у косых черт и скобок будут шансы бросить гаечный ключ в спицы где-то по пути.

Хотя JSON действителен (каким-то образом), я считаю, что //td[2]/input[1] не самая лучшаяИмя поля когда-либо придумано, и оно может не подойти для всех библиотек, заинтересованных в вашем результате!

Вот краткое обсуждение допустимых / недействительных символов в JSON

ЕслиВы управляете структурой JSON, возможно, было бы лучше сделать bac и lastname именами полей и иметь селектор в качестве значения.

...