Зараз 2020 рік - ніхто Net::HTTP
більше не повинен використовувати, і всі відповіді, здається, говорять так, використовуйте дорогоцінний камінь більш високого рівня, такий як Фарадей - Github
Тим не менш, я люблю робити обгортку навколо виклику HTTP api, щось, що називається як
rv = Transporter::FaradayHttp[url, options]
тому що це дозволяє мені підробляти HTTP-дзвінки без додаткових залежностей, тобто:
if InfoSig.env?(:test) && !(url.to_s =~ /localhost/)
response_body = FakerForTests[url: url, options: options]
else
conn = Faraday::Connection.new url, connection_options
Там , де обманщик виглядає як ця
Я знаю, що існують фреймворки знущань / заглушень HTTP, але принаймні, коли я минулого разу досліджував, вони не дозволяли мені ефективно перевіряти запити, і вони стосувалися лише HTTP, а не, наприклад, для необроблених обмінів TCP, ця система дозволяє мені мати уніфікована структура для всього спілкування API.
Якщо припустити, що ви просто хочете швидко і брудно перетворити хеш у json, надішліть json віддаленому хосту, щоб протестувати API та проаналізувати відповідь на ruby, це, мабуть, найшвидший спосіб без залучення додаткових дорогоцінних каменів:
JSON.load `curl -H 'Content-Type:application/json' -H 'Accept:application/json' -X POST localhost:3000/simple_api -d '#{message.to_json}'`
Сподіваємось, це само собою зрозуміло, але не використовуйте це у виробництві.
req = Net::HTTP::Post.new(uri.path, initheader = {'Content-Type' =>'application/json'})