【问题标题】:Syntax error in body using HTTParty (Ruby/HTTParty) [closed]使用 HTTParty(Ruby/HTTParty)的正文中的语法错误 [关闭]
【发布时间】:2019-10-21 17:25:53
【问题描述】:

我只是得到一个错误,真的不知道如何解决这个问题。

我正在尝试什么:

class Addresses
include HTTParty
base_uri "https://reservedurl.com/"

def self.api_search
    search = get('members/api/default/member/addresses')
end

def self.api_change_address(street, new_zip, n)
    change_address = patch('members/api/default/member', {
        :body => {
          :'option_id' => '1'
          :'address' => {
            :'address_id' => '3',
            :'street_name' => '#{street}',
            :'alias' => 'Address',
            :'address_number' => '#{n}',
            :'additional_information' => 'New',
            :'reference_point' => 'New',
            :'city' => 'NY',
            :'country_code' => 55,
            :'district' => 'New',
            :'postal_code' => '#{new_zip}',
            :'state' => 'NY',
            :'default' => true,
            :'address_name' => 'string',
          }
        }.to_json
        :headers => {
          :'Content-Type' => 'application/x-www-form-urlencoded',
          :'charset' => 'utf-8',
          :'Host' => 'reservedurl.com',
          :'Accept-Encoding' => 'gzip, deflate',
          :'Accept' => '*/*',
          :'Postman-Token' => 'token'
        }
      })
end

API 正文:

{
  "option_id": "1",
    "address": {
    "address_id": "token",
    "street_name": "Jack, St",
    "alias": "Address",
    "address_number": "213",
    "additional_information": "New",
    "reference_point": "New",
    "city": "DC",
    "country_code": 55,
    "district": "WS",
    "postal_code": "0453401",
    "state": "WS",
    "default": true,
    "address_name": "string"
  }
}

我得到了这个错误:

    *** WARNING: You must use ANSICON 1.31 or higher (https://github.com/adoxa/ansicon/) to get coloured output on Windows
c:/features/support/this_page.rb:13: syntax error, unexpected tSYMBEG, expecting '}'
              :'address' => {
              ^~
c:/features/support/this_page.rb:13: syntax error, unexpected =>, expecting end     
              :'address' => {
                         ^~
c:/features/support/this_page.rb:28: syntax error, unexpected '}', expecting end    
            }.to_json
            ^
c:/features/support/this_page.rb:29: syntax error, unexpected =>, expecting end
            :headers => {
                     ^~
c:/features/support/this_page.rb:37: syntax error, unexpected '}', expecting end
          })
          ^ (SyntaxError)
C:/Ruby26-x64/lib/ruby/gems/2.6.0/gems/cucumber-3.1.2/lib/cucumber/glue/registry_and_more.rb:107:in `load'
C:/Ruby26-x64/lib/ruby/gems/2.6.0/gems/cucumber-3.1.2/lib/cucumber/glue/registry_and_more.rb:107:in `load_code_file'
C:/Ruby26-x64/lib/ruby/gems/2.6.0/gems/cucumber-3.1.2/lib/cucumber/runtime/support_code.rb:144:in `load_file'
C:/Ruby26-x64/lib/ruby/gems/2.6.0/gems/cucumber-3.1.2/lib/cucumber/runtime/support_code.rb:85:in `block in load_files!'
C:/Ruby26-x64/lib/ruby/gems/2.6.0/gems/cucumber-3.1.2/lib/cucumber/runtime/support_code.rb:84:in `each'
C:/Ruby26-x64/lib/ruby/gems/2.6.0/gems/cucumber-3.1.2/lib/cucumber/runtime/support_code.rb:84:in `load_files!'
C:/Ruby26-x64/lib/ruby/gems/2.6.0/gems/cucumber-3.1.2/lib/cucumber/runtime.rb:272:in `load_step_definitions'
C:/Ruby26-x64/lib/ruby/gems/2.6.0/gems/cucumber-3.1.2/lib/cucumber/runtime.rb:68:in `run!'
C:/Ruby26-x64/lib/ruby/gems/2.6.0/gems/cucumber-3.1.2/lib/cucumber/cli/main.rb:34:in `execute!'
C:/Ruby26-x64/lib/ruby/gems/2.6.0/gems/cucumber-3.1.2/bin/cucumber:9:in `<top (required)>'
C:/Ruby26-x64/bin/cucumber:23:in `load'
C:/Ruby26-x64/bin/cucumber:23:in `<main>'

我真的不明白为什么 HTTParty 不允许我使用这个 body。我明白什么?错误是括号本身,但我试图准确地传递 API 的样子。如果我删除地址行中的括号,我的 API 将不会读取正文。

【问题讨论】:

  • 也许你需要在关闭{}之后移动to_json
  • @Sebastian Palma 同样的错误。
  • 您在'option_id' =&gt; '1' 中遗漏了一些逗号并关闭了body 哈希。
  • 感谢@Sebastian Palma,我看不到逗号甚至读了很多。对不起哈哈哈哈

标签: ruby httparty


【解决方案1】:

:'option_id' =&gt; '1'}.to_json, 之后缺少逗号:

{
  :body => {
    :'option_id' => '1',
    :'address' => {
      :'address_id' => '3',
      :'street_name' => '#{street}',
      :'alias' => 'Address',
      :'address_number' => '#{n}',
      :'additional_information' => 'New',
      :'reference_point' => 'New',
      :'city' => 'NY',
      :'country_code' => 55,
      :'district' => 'New',
      :'postal_code' => '#{new_zip}',
      :'state' => 'NY',
      :'default' => true,
      :'address_name' => 'string',
    }
  }.to_json,
  :headers => {
    :'Content-Type' => 'application/x-www-form-urlencoded',
    :'charset' => 'utf-8',
    :'Host' => 'reservedurl.com',
    :'Accept-Encoding' => 'gzip, deflate',
    :'Accept' => '*/*',
    :'Postman-Token' => 'token'
  }
}

【讨论】:

  • 我的天啊,我读了很多遍都看不到逗号,谢谢Anothermh。我现在感觉很笨哈哈哈。
  • 因为是正确的并且在评论指出同一件事之前发布答案而被否决。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-10-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多