[英]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.