如果我这样做:
conn = Faraday.new(url: 'http://example.com/api') do |builder|
builder.adapter :httpclint
end
它从基本网址中删除/api
,conn.host
返回"example.com"
。我以后做的时候:
conn.post { |req| req.url '/resource'...}
它会调用example.com/resource
,而不是example.com/api/resource
。如何更改它以便不会删除基本网址?
我知道我只能使用example.com
进行初始化,然后执行以下操作:
conn.post { |req| req.url '/api/resource'...}
但我希望将基本网址存储在全局配置中,以便只在代码中使用资源名称。
答案 0 :(得分:3)
在请求开头省略正斜杠,它将相对于您提供的初始URL。否则,它将从主机的根目录开始:
conn.post { |req| req.url 'resource'...} # Treated as example.com/api/resource
conn.post { |req| req.url '/resource'...} # Treated as example.com/resource
这是设计(见this GitHub issue)