【问题标题】:Sending a patch request to edit video using vimeo api not working发送补丁请求以使用 vimeo api 编辑视频不起作用
【发布时间】:2017-07-21 03:54:11
【问题描述】:

我正在尝试发送补丁请求以使用 ruby​​ 使用 vimeo api 编辑视频。请求成功,但 vimeo 无法读取我的有效负载(标题和描述),即标题和描述没有改变。我使用过 HTTParty、RestClient 以及 Net::HTTP,但它们都不起作用。以下是我为发送补丁请求而实现的代码,

RestClient

payload = {"description" => "Test Description", "name" => "Test Video"}
res = RestClient.patch(
             vimeo_edit_url, 
             payload.to_s,
             { "Authorization" => auth })

NET::HTTP

options = {'description' => "Test Description", 'name' => "Test Video"}
edit_req = Net::HTTP::Patch.new(vimeo_edit_url, initheader = { "Authorization" => auth})
edit_req.data = options.to_s
edit_uri = URI(vimeo_edit_url)
edit_http = Net::HTTP.new(edit_uri.host, edit_uri.port)
edit_http.use_ssl = true
edit_http.verify_mode = OpenSSL::SSL::VERIFY_PEER
edit_response = edit_http.request(edit_req)

通常响应将是 200 OK 更新视频详细信息,但我得到 200 OK 视频详细信息(标题和描述未更改)。就好像 vimeo 无法读取我的有效载荷一样。

【问题讨论】:

    标签: ruby http vimeo-api


    【解决方案1】:

    您可能想要传递payload,而不是payload.to_s

    .to_s 正在将您精心安排的哈希转换为奇怪的 ruby​​ified 字符串,您提到的所有 HTTP 库都将接受哈希并为您处理转换。

    这是irb 会话中一些不同的表示形式:

    >> payload = {"description" => "Test Description", "name" => "Test Video"}
    >> payload
    => {"description"=>"Test Description", "name"=>"Test Video"}
    >> payload.to_s
    => "{"description"=>"Test Description", "name"=>"Test Video"}"
    >> require 'json'
    => true
    >> payload.to_json
    => "{"description":"Test Description","name":"Test Video"}"
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-07-02
      • 1970-01-01
      • 2015-09-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-05-21
      相关资源
      最近更新 更多