【问题标题】:How to perform the following curl request using the ruby Faraday gem?如何使用 ruby​​ Faraday gem 执行以下 curl 请求?
【发布时间】:2017-04-14 03:11:09
【问题描述】:

这是我要执行的 curl 请求:

curl --request GET --url 'https://us8.api.mailchimp.com/3.0/' --user 'anystring:<apikey>'

从命令行运行这个 curl 命令,我得到了一堆 JSON,这正是我想要的。

我正在尝试使用法拉第执行相同的请求。这是我尝试过的:

conn = Faraday.new "https://us8.api.mailchimp.com/3.0/" do |faraday|
  faraday.adapter Faraday.default_adapter
end
conn.basic_auth('apikey', <apikey>)

response = conn.get

puts response.body # => "<!DOCTYPE HTML PUBLIC \"-//IETF//DTD HTML 2.0//EN\">\n<html><head>\n<title>301 Moved Permanently</title>\n</head>...

如何获取 JSON 而不是我在 response.body 中看到的 html?

【问题讨论】:

    标签: ruby http curl mailchimp faraday


    【解决方案1】:

    这最终对我有用:

    conn = Faraday.new('https://us8.api.mailchimp.com/3.0/') do |c|
      c.use FaradayMiddleware::ParseJson, content_type: "application/json"
      c.use Faraday::Adapter::NetHttp
    end
    
    conn.basic_auth('apikey', <api_key>)
    
    response = conn.get('campaigns')
    
    puts response # => json blob
    

    【讨论】:

      【解决方案2】:

      这是使用 ruby​​ gem 进行 curl 操作的 Farday 代码。

          def contacts
           response = JSON.parse(params)
      
           @conn = Faraday.new('https://domain.example.com/api/v2/') do |farday|
            farday.use FaradayMiddleware::ParseJson, content_type: "application/json"
            farday.use Faraday::Adapter::NetHttp
           end
           @conn.basic_auth('apikey', <your_api_key>)
           response = @conn.get('contacts')
           puts response 
           render :json => {"success" => true}
      
          end
      

      【讨论】:

        【解决方案3】:

        更简洁的选项是将您的凭据手动编码为 Base64 并手动设置 Authorization 标头。这样可以节省几行代码,并使其保持与常规法拉第请求类似的格式(即Faraday.post &lt;URL&gt;, &lt;BODY&gt;, &lt;HEADERS&gt;)。

        encoded_credentials = Base64.encode64('apikey:api_secret').chomp
        Faraday.post 'http://myhost.local/my_url', {}, authorization: "Basic #{encoded_credentials}"
        

        【讨论】:

          猜你喜欢
          • 2016-06-10
          • 1970-01-01
          • 1970-01-01
          • 2012-11-26
          • 2015-03-23
          • 2019-02-01
          • 1970-01-01
          • 2016-11-19
          • 2012-03-15
          相关资源
          最近更新 更多