卷曲/动态动词(curb gem)

时间:2018-03-12 07:42:39

标签: ruby-on-rails ruby http curl

鉴于以下内容:

Curl.post(…)
Curl.get(…)
Curl.put(…)
Curl.delete(…)

我有一堆标题,所以在整个地方指定那些标题往往会使代码最终变得冗长。像下面这样的共享方法非常有用:

   def query(verb, endpoint, params)
      Curl.send(verb, endpoint, params) { etc … }
   end

但目前收到以下错误:

Traceback (most recent call last):
        2: from (irb):5
        1: from app/lib/query.rb:12:in `run'
NoMethodError (undefined method `map' for nil:NilClass)

显然是语法问题。能以某种方式完成吗?是否应该使用另一个图书馆来满足这种需求?

1 个答案:

答案 0 :(得分:1)

好的,只是发现,params不能用这样的语法为零;所以要传递一个默认的空哈希:

def query(token, verb, endpoint, params = {})
  http = Curl.send(verb, endpoint, params) do |http|
    http.headers['Accept-Encoding'] = 'gzip,deflate'
    http.headers['Authorization'] = "Bearer #{token}"
  end
  http.body_str
end

现在:

ClassName.query('xxx', 'get', 'http://...')
ClassName.query('xxx', 'post', 'http://...', {some: :data})
ClassName.query('xxx', 'put', 'http://...', {some: :data})
ClassName.query('xxx', 'delete', 'http://...')

作品

相关问题