[英]Ruby API wrapper module
我正在使用HTTParty编写第三方REST
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中有同等功能吗?
绝对可以在Ruby中完成。 您需要在const_missing
上实现const_missing
,这将返回一个实现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
end
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.