Есть отличная удаленная работа для php+codeception+jenkins+allure+docker спецов. 100% remote! Присоединиться к проекту

Как в Airborne отправить POST запрос с form параметрами?

unirest
rspec
airborne
ruby
api
post
http
Теги: #<Tag:0x00007f7b6d1f5208> #<Tag:0x00007f7b6d1f50a0> #<Tag:0x00007f7b6d1f4f10> #<Tag:0x00007f7b6d1f4d58> #<Tag:0x00007f7b6d1f4bc8> #<Tag:0x00007f7b6d1f4a38> #<Tag:0x00007f7b6d1f4830>

(Сергей Блохин) #1

Есть простая с виду задача. Отправить POST запрос… в Airborne.
На Unirest это делается просто.

Запрос

# encoding: utf-8

require 'unirest'

describe :unirest do
  it :post do
    response = Unirest.post 'http://httpbin.org/post', parameters: {foo: 42}
    puts response.body
  end
end

Ответ

{
  "args":{

  },
  "data":"",
  "files":{

  },
  "form":{
    "foo":"42"
  },
  "headers":{
    "Accept":"*/*",
    "Accept-Encoding":"gzip, deflate",
    "Accept-Language":"ru",
    "Content-Length":"6",
    "Content-Type":"application/x-www-form-urlencoded; charset=utf-8",
    "Host":"httpbin.org",
    "User-Agent":"Do%20Http/1.8.6 CFNetwork/760.5.1 Darwin/15.5.0 (x86_64)"
  },
  "json":null,
  "origin":"178.76.226.8",
  "url":"http://httpbin.org/post"
}

А вот через Airborne не получается.

Запрос

# encoding: utf-8

require 'airborne'

Airborne.configure { |config| config.base_url = 'http://httpbin.org' }

describe :airborne do 
  it :post do
    post '/post', {foo: 42}
    puts response.body
  end
end

Ответ

{
  "args": {}, 
  "data": "{\"foo\":42}", 
  "files": {}, 
  "form": {}, 
  "headers": {
    "Accept": "*/*; q=0.5, application/xml", 
    "Accept-Encoding": "gzip, deflate", 
    "Content-Length": "10", 
    "Content-Type": "application/json", 
    "Host": "httpbin.org", 
    "User-Agent": "Ruby"
  }, 
  "json": {
    "foo": 42
  }, 
  "origin": "178.76.226.8", 
  "url": "http://httpbin.org/post"
}

Параметры попали в data, а нужно, чтобы попали в form, как в первом примере.

Куда копать?