我正在使用REST为第三方HTTParty API编写一个包装器。我希望能够通过调用本地模块来调用第三方API,如下所示:
APIWrapper::APIObject::APIMethod我想在APIWrapper中编写一个神奇的函数,它接受函数调用,并解码对象和方法来调用第三方API。所以上面的电话会做这样的事情:
params = {
'format' = 'json',
'object' = api_object,
'method' = api_method,
}
get(APIWrapper::BASE_URI, {:query => params})我希望能够基于调用的方法自动填充api_object和api_method,这样我就不必为我想要生成的每个API调用显式地编写一个方法。在PHP中,这将使用神奇的__get方法来完成。在Ruby中有类似的吗?
发布于 2013-09-07 20:25:58
在Ruby中绝对可以做到这一点。您需要在const_missing上实现APIWrapper,它将返回一个实现method_missing的对象以获得API方法部分:
module APIWrapper
def const_missing(const_name)
anon_class = Class.new do
def method_missing(name, *params, &block)
params = {
'format' = 'json',
'object' = const_name.to_s,
'method' = name.to_s,
}
get(APIWrapper::BASE_URI, {:query => params})
end
end
end
endhttps://stackoverflow.com/questions/18677508
复制相似问题