我正在尝试使用 Grape 和 Ruby 来制作 Yo API 回调函数。
我可以像这样启动并运行简单的示例。 。 .
resource :loc do
get ':loc' do
params.to_yaml
end
end
如果给定以下格式的回调,我将如何将用户名
和x
和y
坐标提取到单独的Ruby变量中?
http://yourcallbackurl.com/yourendpoint?username=THEYOER&location=42.360091;-71.094159
当位置数据搞砸时。 。 。
--- !ruby/hash:Hashie::Mash
username: sfsdfsdf
location: '42.360091'
"-71.094159":
route_info: !ruby/object:Grape::Route
options:
:prefix:
:version: v1
:namespace: "/loc"
:method: GET
:path: "/:version/loc/:loc(.:format)"
:params:
loc: ''
:compiled: !ruby/regexp /\A\/(?<version>v1)\/loc\/(?<loc>[^\/.?]+)(?:\.(?<format>[^\/.?]+))?\Z/
version: v1
loc: toto
format: txt
最佳答案
这是how Rack::Utils works 。默认参数分隔符是“&”和“;” (根据 HTTP 标准,它完全合法)。所以你必须在这里自己解析查询字符串。
location = Rack::Utils.parse_nested_query(env['QUERY_STRING'], '&')['location']
coordinates = location.split(';')
UPD:修复了哈希键的拼写错误。
关于ruby - 如何使用 Ruby Grape 从 get 请求中提取数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26564154/