簡體   English   中英

Ruby API包裝器模塊

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM