Ein Puzzle wie das im Titel war vor einigen Jahren beliebt. Ich habe es gefunden, also habe ich es herausgefordert.
Versuchen Sie zunächst, direkt in den Browser einzugeben. http://challenge-your-limits.herokuapp.com/call/me Dann kam der folgende Text zurück.
{"message":"Almost! It's not GET. Keep trying."}
Ich habe gehört, dass es nicht GET ist, also Lassen Sie uns per Post anfordern.
Sie können es mit Locken tun, aber dieses Mal werde ich versuchen, eine Anfrage mit Ruby zu stellen.
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"}
Erfolg und die nächste Herausforderung Ändern Sie zunächst den Pfad und die Anforderung so wie sie sind.
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\"]"}
Ich wurde angewiesen, die Parameter zu übergeben. Da es sich um POST handelt, werden Daten in den Anforderungshauptteil gestellt.
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\"]"}
Das? Ich kann die Parameter nicht übergeben, Kontemplation von hier und Konserven. Lol
Die Ursache war, dass der Anforderungshauptteil Parameter im JSON-Format enthielt. Ich bedauere, dass ich dachte, der Körper sei json ...
Die Net :: HTTP :: Post-Bibliothek verfügt über eine praktische Methode namens set_form_data Wenn Sie Hash als Argument übergeben, wird der Parameter als Zeichenfolge in den Text eingefügt.
require 'net/http'
params = {
name: 'hogehoge'
}
#Kürzung
req.set_form_data(params)
puts req.body
#=> name=hogehoge
puts req.body.class
#=> String
Und bearbeiten
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\"]"}
Sie können Parameter nicht für immer angeben, oder? Fügen Sie die E-Mail wie angegeben hinzu
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: Während ich mich frage, ob es wahr ist Ich habe eine andere Adresse eingegeben und es ist gelungen.
{"message":"Thanks! Please access to http://challenge-your-limits.herokuapp.com/challenge_users/token/********** from your web browser."}
Es war eine gute Gelegenheit, meine Position zu bestätigen und zu sagen, dass ich immer noch unter den unteren 10% bin. Jetzt, da ich das Wissen habe, Anforderungsparameter in Bezug auf POST einzufügen, denke ich, dass dies ein Fortschritt ist.
Jeden Tag gewidmet.
Recommended Posts