Un puzzle comme celui du titre était populaire il y a quelques années. Je l'ai trouvé, alors je l'ai contesté.
Tout d'abord, essayez de taper directement dans le navigateur. http://challenge-your-limits.herokuapp.com/call/me Puis, le texte suivant est revenu.
{"message":"Almost! It's not GET. Keep trying."}
J'ai entendu dire que ce n'est pas GET, donc Demandons par POST.
Vous pouvez le faire avec curl, mais cette fois je vais essayer de faire une demande avec Ruby.
require 'net/http'
uri = URI.parse('http://challenge-your-limits.herokuapp.com/call/me')
http = Net::HTTP.new(uri.host, uri.port)
req = Net::HTTP::Post.new(uri.path)
response = http.request(req)
puts response.body
#=>{"message":"Great! Please register as /challenge_users"}
Le succès et le prochain défi Tout d'abord, changez le chemin et demandez tel quel.
require 'net/http'
uri = URI.parse('http://challenge-your-limits.herokuapp.com/challenge_users')
http = Net::HTTP.new(uri.host, uri.port)
req = Net::HTTP::Post.new(uri.path)
response = http.request(req)
puts response.body
#=>{"message":"Validation Error, [:name, \"can't be blank\"]"}
J'ai été chargé de passer les paramètres. Puisqu'il s'agit de POST, les données sont placées dans le corps de la requête.
require 'net/http'
require 'json'
params = {
name: 'hogehoge'
}
uri = URI.parse('http://challenge-your-limits.herokuapp.com/challenge_users')
http = Net::HTTP.new(uri.host, uri.port)
req = Net::HTTP::Post.new(uri.path)
req.body = params.to_json
response = http.request(req)
puts response.body
#=> {"message":"Validation Error, [:name, \"can't be blank\"]"}
cette? Je ne peux pas passer les paramètres, Contemplation d'ici et mise en conserve. Lol
La cause était que j'ai mis les paramètres au format json dans le corps de la requête. Je regrette d'avoir pensé que le corps était json ...
La bibliothèque Net :: HTTP :: Post a une méthode pratique appelée set_form_data, qui Si vous passez le hachage comme argument, le paramètre sera placé dans le corps sous forme de chaîne de caractères.
require 'net/http'
params = {
name: 'hogehoge'
}
#réduction
req.set_form_data(params)
puts req.body
#=> name=hogehoge
puts req.body.class
#=> String
Et éditer
require 'net/http'
params = {
name: 'hogehoge'
}
uri = URI.parse('http://challenge-your-limits.herokuapp.com/challenge_users')
http = Net::HTTP.new(uri.host, uri.port)
req = Net::HTTP::Post.new(uri.path)
req.set_form_data(params)
response = http.request(req)
puts response.body
#=> {"message":"Validation Error, [:email, \"can't be blank\"]"}
Vous ne pouvez pas spécifier de paramètres pour toujours, non? Ajouter un e-mail comme indiqué
require 'net/http'
params = {
name: 'hogehoge',
email: '[email protected]'
}
uri = URI.parse('http://challenge-your-limits.herokuapp.com/challenge_users')
http = Net::HTTP.new(uri.host, uri.port)
req = Net::HTTP::Post.new(uri.path)
req.set_form_data(params)
response = http.request(req)
puts response.body
#=> {"message":"Validation Error, [:email, \"is already taken\"]"}
uniq: en se demandant si c'est vrai J'ai entré une autre adresse et cela a réussi.
{"message":"Thanks! Please access to http://challenge-your-limits.herokuapp.com/challenge_users/token/********** from your web browser."}
C'était une bonne occasion de reconfirmer ma position, en disant que je suis toujours dans les 10% inférieurs. Maintenant que j'ai les connaissances nécessaires pour insérer des paramètres de requête concernant POST, je pense que c'est un pas en avant.
Dédié chaque jour.