HTTParty 补丁 Sinatra API returns "invalid value"

HTTParty Patch Sinatra API returns "invalid value"

以下路线可以到达 api。

api returns "invalid value"。我假设这是一个数据类型问题。 API 文档:

value
  string    
Value of the zone setting
  "off"
default value: off
valid values: on, off

API CURL 示例:

curl -X PATCH "https://api.cloudflare.com/client/v4/zones/023e105f4ecef8ad9ca31a8372d0c353/settings/development_mode" \
     -H "X-Auth-Email: user@example.com" \
     -H "X-Auth-Key: c2547eb745079dac9320b638f5e225cf483cc5cfdda41" \
     -H "Content-Type: application/json" \
     --data '{"value":"off"}'

路线:

    get '/devModeOff' do
          headers = {
            "X-Auth-Email" => '####',
            "X-Auth-Key" =>   '####',
            "Content-Type" => 'application/json'
          }
   options = '{value: 'off'}'

         @result = HTTParty.patch(
          'https://api.cloudflare.com/client/v4/zones/####/settings/development_mode',
          :headers => headers,
          :data => options
          )
          puts @result

          redirect to ('/')
        end

我是 ruby 的新手,我该如何解决这个问题?

您的 "Route" 代码是无效的 Ruby 代码,所以我完全不确定它是如何 运行 的。特别是,这一行有未闭合的引号:

options = '{value: 'off'}'

我不确定你打算在这里做什么——如果你试图制作一个 Ruby 哈希或一个 JSON 字符串——但你想要做的是:

headers = {
  "X-Auth-Email" => "####",
  "X-Auth-Key"   => "####",
  "Content-Type" => "application/json"
}

options = { value: "off" }

@result = HTTParty.patch(
  "https://api.cloudflare.com/client/v4/zones/####/settings/development_mode",
  headers: headers,
  body: options.to_json
)

请注意,options 是一个哈希,它作为 :body 选项(不是 :data)提供给 HTTParty.patch