繁体   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