【问题标题】:updating a column Parse Rest API更新列 Parse Rest API
【发布时间】:2015-08-06 09:14:21
【问题描述】:

我正在尝试为 ex 更新用户信息。电话、电子邮件等。

我看了这个:https://parse.com/docs/rest/guide#users-updating-users

所以我在我的控制器中写了这个:

@response = HTTParty.put('https://api.parse.com/1/users/',
  :headers => {"X-Parse-Application-Id" => "APIKEY", 
               "X-Parse-REST-API-Key" => "APIKEY",
               "X-Parse-Session-Token" => session[:session_token],
               "Content-Type" => "application/json"},
  :data    => {"phoneNumber" => "9994432"})

我在视图中返回 @response 并取回: {"error"=>"requested resource was not found"}

我在想可能是因为我没有在 url 中传递用户的 objectid?

【问题讨论】:

  • 好吧,你为什么不添加objectID并查看结果? :)
  • 我添加了它并且我得到了这个{"code"=>107, "error"=>"invalid JSON"} 我如何动态添加它,我显然不想硬编码,我想要它以便任何用户使用该站点
  • 在您的 Application-Id-Header 中,该值显示为“APIKEY”,与 REST-API-Key 相同 - 可能只是拼写错误,但它不适用于两个标头的相同密钥。

标签: ruby-on-rails ruby rest curl parse-platform


【解决方案1】:

好吧,既然您已经手动创建了对 API 的 HTTP 请求,是时候切换到一些库/gem 来与 Parse 交互了。希望构建您会发现的库的人已经处理了许多日常任务(例如正确格式化您的 JSON - 您现在正在调查的错误),并且在许多情况下都有良好的文档。

我建议parse-ruby-client

gem 'parse-ruby-client', github: 'adelevie/parse-ruby-client' 添加到Gemfile(最好使用master 版本,而不是当前的Rubygems 版本,因为他们说还有一些有用的更改尚未推送到Rubygems),然后运行bundle install as平时,你很高兴。

对象保存很简单

game_score = client.object("GameScore")
game_score["score"] = 1337
game_score["playerName"] = "Sean Plott"
game_score["cheatMode"] = false
result = game_score.save
puts result

根据他们的documentation

UPD。回答原始问题。您可以使用函数来动态提供对象 ID:

def update_user(object_id)
  @response = HTTParty.put("https://api.parse.com/1/users/#{object_id}",
    :headers => {"X-Parse-Application-Id" => "APIKEY", 
           "X-Parse-REST-API-Key" => "APIKEY",
           "X-Parse-Session-Token" => session[:session_token],
           "Content-Type" => "application/json"},
    :data => {"phoneNumber" => "9994432"})
end

【讨论】:

  • 我不能用 Parse Rest API 做到这一点?
  • 这个 gem 确实使用 Parse Rest API。当然,你可以只用 HTTParty 做任何你想做的事情。但是你已经受够了,是时候转向更适合你手头任务的工具了:)
  • 如何在http请求url中传递对象id?
  • 我说完你还想用HTTParty:看来你必须把它加到URL的末尾
  • 是的,我意识到这一点,但我怎么能这样做,所以它是一个变量,所以登录的人都是动态的
【解决方案2】:

我的解决方案是强制变量为 int 和 string

response = HTTParty.put("https://api.parse.com/1/users/#{object_id}",
:headers => {
        "X-Parse-Application-Id" => ENV['PARSE_APP_ID'].to_s, 
        "X-Parse-REST-API-Key" => ENV['PARSE_API_KEY'].to_s,
        "X-Parse-Session-Token" => token.to_s,
        "Content-Type" => "application/json"},
  :body => {"h_optimum" => optimum.to_i,
        "h_moderate" => moderate.to_i,
        "h_appalling" => appalling.to_i}
)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-10-26
    • 2019-06-06
    • 2018-05-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多