Ruby send JSON request

后端 未结 10 1325
后悔当初
后悔当初 2020-11-28 20:37

How do I send a JSON request in ruby? I have a JSON object but I dont think I can just do .send. Do I have to have javascript send the form?

Or can I us

10条回答
  •  借酒劲吻你
    2020-11-28 21:07

    real life example, notify Airbrake API about new deployment via NetHttps

    require 'uri'
    require 'net/https'
    require 'json'
    
    class MakeHttpsRequest
      def call(url, hash_json)
        uri = URI.parse(url)
        req = Net::HTTP::Post.new(uri.to_s)
        req.body = hash_json.to_json
        req['Content-Type'] = 'application/json'
        # ... set more request headers 
    
        response = https(uri).request(req)
    
        response.body
      end
    
      private
    
      def https(uri)
        Net::HTTP.new(uri.host, uri.port).tap do |http|
          http.use_ssl = true
          http.verify_mode = OpenSSL::SSL::VERIFY_NONE
        end
      end
    end
    
    project_id = 'yyyyyy'
    project_key = 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'
    url = "https://airbrake.io/api/v4/projects/#{project_id}/deploys?key=#{project_key}"
    body_hash = {
      "environment":"production",
      "username":"tomas",
      "repository":"https://github.com/equivalent/scrapbook2",
      "revision":"live-20160905_0001",
      "version":"v2.0"
    }
    
    puts MakeHttpsRequest.new.call(url, body_hash)
    

    Notes:

    in case you doing authentication via Authorisation header set header req['Authorization'] = "Token xxxxxxxxxxxx" or http://api.rubyonrails.org/classes/ActionController/HttpAuthentication/Token.html

提交回复
热议问题