97 votes

Ruby envoie une requête JSON

Comment envoyer une demande JSON en ruby? J'ai un objet JSON mais je ne pense pas pouvoir simplement envoyer. Dois-je avoir javascript pour envoyer le formulaire?

Ou puis-je utiliser la classe net / http en ruby?

Avec en-tête - type de contenu = json et corps de l’objet json?

Merci

92voto

CarelZA Points 132
uri = URI('https://myapp.com/api/v1/resource')
req = Net::HTTP::Post.new(uri, initheader = {'Content-Type' =>'application/json'})
req.body = {param1: 'some value', param2: 'some other value'}.to_json
res = Net::HTTP.start(uri.hostname, uri.port) do |http|
  http.request(req)
end

56voto

neoneye Points 11545
require 'net/http'

def create_agent
    uri = URI('http://api.nsa.gov:1337/agent')
    http = Net::HTTP.new(uri.host, uri.port)
    req = Net::HTTP::Post.new(uri.path, initheader = {'Content-Type' =>'application/json'})
    req.body = {name: 'John Doe', role: 'agent'}.to_json
    res = http.request(req)
    puts "response #{res.body}"
rescue => e
    puts "failed #{e}"
end

31voto

Tom Morris Points 2182

Utiliser net / http est assez facile - voir cette page pour un exemple assez clair sur la façon de faire une demande POST avec net / http et JSON.

Lisez la documentation net / http et examinez le joyau Curb (vous ne pourrez cependant pas utiliser Curb si vous utilisez JRuby ou IronRuby). Regardez aussi Rest-Client .

16voto

Brian Armstrong Points 8259

HTTParty rend cela un peu plus facile à mon avis (et fonctionne avec un JSON imbriqué, etc., ce qui ne semblait pas fonctionner dans d'autres exemples que j'ai vus.

 require 'httparty'
HTTParty.post("http://localhost:3000/api/v1/users", body: {user: {email: 'user1@example.com', password: 'secret'}}).body
 

3voto

Christoffer Points 2179

Voici un exemple de requête json POST simple pour ceux qui en ont besoin encore plus que ce à quoi Tom se connecte:

 require 'net/http'

uri = URI.parse("http://www.example.com/search.json")
response = Net::HTTP.post_form(uri, {"search" => "Berlin"})
 

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X