ruby - 如何使用 Ruby Grape 从 get 请求中提取数据

标签 ruby api ruby-grape grape-api yo

我正在尝试使用 Grape 和 Ruby 来制作 Yo API 回调函数。

我可以像这样启动并运行简单的示例。 。 .

resource :loc do
    get ':loc' do        
        params.to_yaml
    end
end

如果给定以下格式的回调,我将如何将用户名xy坐标提取到单独的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/

相关文章:

ruby - 如何为类方法动态定义别名方法?

ruby - 加载错误 : no such file to load -- openssl/dummy

node.js - 使用 Node.js 进行 api 身份验证

api - 通过msxml2.ServerXMLHTTP提供身份验证信息

ruby-on-rails - 在 Rack 应用程序上使用 Grape-Api gem 获取绝对 URL

ruby-on-rails - 如何登录葡萄设计用户?

ruby-on-rails - Stubbing 葡萄 helper

ruby-on-rails - HAML rails form_for 不调用 POST 方法

ruby - resque-scheduler 在作业删除时失败

从邀请文本中检测时间、日期和地点的算法