ruby - 如何在 Sinatra 中读取 HTTParty 发送的数据
问题描述
我试图让两个单独的 Ruby 程序进行通信,一个与 Sinatra gem,另一个与 HTTParty gem。我正在尝试做的是从另一个程序中的 HTTP 发布请求将数据发布到 Sinatra 程序。
这是发送数据的代码。
HTTParty.post('https://notgivingawaymydomain/post_data', {something: foo})
但是,我不知道如何在另一端接收数据。我已经尝试了一些我在互联网上研究的东西,但似乎没有一个有效。
编辑
我在另一端的代码目前真的没什么特别的,但我会放上我一直在尝试的东西。
post '/post_data' do
#not sure how to access the hash that my post request sent here
end
解决方案
发布数据params
在您的 Sinatra 路由内的对象中可用:
post '/post_data' do
data = params["something"] # => my_value is now 'foo' in this example
#... rest of code
end
Sinatra 仅在数据为application/x-www-form-urlencoded
(在本例中为)或multipart/form-data
. 如果您想发布另一种类型(例如 JSON),您需要自己解析请求正文request.body
:
post '/json_data'
# request.body is an IO object
data = JSON.parse(request.body.read)
end
确保HTTParty
调用的语法正确。您需要指定body:
选项的键:
HTTParty.post('http://localhost:4567/post_data', body: {something: "foo"})
推荐阅读
- c# - “System.Object”类型是在未引用的程序集中定义的。您必须添加对程序集 'netstandard, Version=2.0.0.0 的引用
- python - flask_login,如何从新线程中获取 current_user?
- monitoring - 如何在 Zabbix 上关闭特定时间段的触发器?
- router - 2 个级联路由器,带 2 个 DHCP 和远程访问
- java - 调用 getter 到惰性初始化字段后的 org.hibernate.lazyinitializationexception
- java - 如何编排批处理执行?
- angular - Asp.net 核心 - 剃须刀页面 (.cshtml) 与 Angular 2+
- authentication - Kafka SASL:OAUTHBEARER 和 PLAIN 同时
- r - 如何在不将列名的破折号和空格更改为点的情况下导出为 .csv?
- amazon-web-services - 用于在多个 AWS 账户上托管不同环境的 Route 53