请求正文被更改?或者没有翻译正确

Request body being changed? Or not translated correctly

我正在从 Rails 应用向 ExpressJS 应用发送 post 请求。在 postman 中它可以工作,但是当我从 Rails 应用程序发送 post 请求时,参数在 rails 端看起来很好但是当 ExpressJS 应用程序接收到它们时,他们不一样??特别是在嵌套哈希 (forms_list) 中。帮助。这是数据:

这些是 rails 参数:

{: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)

这些是在 postman 中发送的有效参数:

{"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 端如何解释它的屏幕截图:

数据应该是这样的(这是与 postman 数据一起发送的):

我会注意具有有效的 JSON 字段名称。特别是斜杠和括号,将有机会在途中的某个地方向辐条扔扳手。

虽然 JSON 是有效的(不知何故),但我相信 //td[2]/input[1] 并不是有史以来最伟大的字段名,它可能无法与所有与您的结果息息相关的图书馆一起发挥作用!

Here's a brief discussion on valid/invalid characters in JSON

如果您可以控制 JSON 的结构,也许将 baclastname 作为字段名并让选择器作为值会更好。