鉴于以下内容:
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)
显然是语法问题。能以某种方式完成吗?是否应该使用另一个图书馆来满足这种需求?
答案 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://...')
作品