【问题标题】:JSON Post on Sinatra with Rails3使用 Rails3 在 Sinatra 上发布 JSON
【发布时间】:2012-08-09 07:31:55
【问题描述】:

我正在开发 API,我使用 Sinatra 和 Rabl 为 Rails 应用程序开发 API。 现在,当 iOS 开发人员以 JSON 格式发布数据时,我遇到了一个问题

url 是:'/users/2/contacts',并且向这个 URL 发出了 post 请求

我可以通过以下方式获取所有 JSON 数据 JSON.parse env['rack.input'].read 或通过 ::MultiJson.decode(request.body)

但我无法从 URL 中获取用户 ID '2',如果知道如何从 url 中获取参数将不胜感激。

【问题讨论】:

    标签: json api post sinatra


    【解决方案1】:

    我假设 /users/2/contacts 是 JSON 发布到的 URL。

    如果路由设置正确,您应该能够从控制器中的params[:id] 获取用户 ID。

    在 Rails 中,所有请求参数都经过解析并在 params 哈希中可用,如果您的内容类型正确,则包括解析的 JSON 数据。见the Ruby on Rails Guide topic that covers this。

    【讨论】:

    • 抱歉,不清楚这是 Sinatra 特有的问题。如果您在路由中命名参数,Sinatra 也有一个参数哈希。见sinatrarb.com/intro.html。
    • 是的,如果我发布 http 数据,这有效,但如果我发布 JSON 数据,则无效
    • 有趣。作为最后的手段,您可以直接解析查询字符串 - 例如CGI::parse(request.query_string)。
    • 嗯我之前也尝试过,但它只返回'?'之后的查询字符串即 www.abc.com/users/2/contacts?test=val&abc=xyz 所以它解析 test 和 abc 变量但不解析'2'
    • 呃,应该想到的:)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-10-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-26
    • 1970-01-01
    相关资源
    最近更新 更多