使用httparty我正在发出GET请求:
https://api.marktplaats.nl/api3/categories.json?oauth_token=1me6jq76h8t6rim747m7bketkd&api_ver=3.7&session=ebc565b8-659f-40f6-9d0a-96986f1d1595&screenWidth=62&screenHeight=111&app_ver=Android3.1.0
Run Code Online (Sandbox Code Playgroud)
代码A:
require 'httparty'
class Marktplaats
def categories
HTTParty.get('https://api.marktplaats.nl/api3/categories.json?oauth_token=1me6jq76h8t6rim747m7bketkd&api_ver=3.7&session=ebc565b8-659f-40f6-9d0a-96986f1d1595&screenWidth=62&screenHeight=111&app_ver=Android3.1.0')
end
end
Run Code Online (Sandbox Code Playgroud)
代码B:
require 'httparty'
class Marktplaats
@oauth_token = '1me6jq76h8t6rim747m7bketkd'
def categories
HTTParty.get("https://api.marktplaats.nl/api3/categories.json?oauth_token=#{@oauth_token}&api_ver=3.7&session=ebc565b8-659f-40f6-9d0a-96986f1d1595&screenWidth=62&screenHeight=111&app_ver=Android3.1.0")
end
end
Run Code Online (Sandbox Code Playgroud)
做的时候:
m = Marktplaats.new
m.categories
Run Code Online (Sandbox Code Playgroud)
代码A有效,但代码B没有.
调用.request.last_uri.to_s代码B的GET调用返回:
https://api.marktplaats.nl/api3/categories.json?oauth_token=&api_ver=3.7&session=ebc565b8-659f-40f6-9d0a-96986f1d1595&screenWidth=62&screenHeight=111&app_ver=Android3.1.0
Run Code Online (Sandbox Code Playgroud)
怎么可能出错?
这是在类级别与实例级别定义变量的情况.您已@oauth_token在类级别定义,但尝试在实例级别使用它,但不能.尝试将代码更改为:
class Marktplaats
def initialize
@oauth_token = '1me6jq76h8t6rim747m7bketkd'
end
def categories
HTTParty.get("https://api.marktplaats.nl/api3/categories.json?oauth_token=#{@oauth_token}&api_ver=3.7&session=ebc565b8-659f-40f6-9d0a-96986f1d1595&screenWidth=62&screenHeight=111&app_ver=Android3.1.0")
end
end
Run Code Online (Sandbox Code Playgroud)
或者对此,它使用在类和实例级别都可访问的常量(但不应该更改):
class Marktplaats
OAUTH_TOKEN = '1me6jq76h8t6rim747m7bketkd'
def categories
HTTParty.get("https://api.marktplaats.nl/api3/categories.json?oauth_token=#{OAUTH_TOKEN}&api_ver=3.7&session=ebc565b8-659f-40f6-9d0a-96986f1d1595&screenWidth=62&screenHeight=111&app_ver=Android3.1.0")
end
end
Run Code Online (Sandbox Code Playgroud)