[RUBY] Ich habe ein Rätsel ausprobiert, das nur von den unteren 10% der schlechten Ingenieure gelöst werden kann

Ein Puzzle wie das im Titel war vor einigen Jahren beliebt. Ich habe es gefunden, also habe ich es herausgefordert.

Puzzle

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

Ich habe ein Rätsel ausprobiert, das nur von den unteren 10% der schlechten Ingenieure gelöst werden kann
Beschreibung, die es nur für Poster zugänglich macht
Ein Kratzen des vergangenen Wetters, das auf der Website der Meteorologischen Agentur zu sehen ist
Ich habe JAX-RS ausprobiert und mir das Verfahren notiert
[Java] Ich habe versucht, ein Janken-Spiel zu erstellen, das Anfänger auf der Konsole ausführen können
[Java] Ich habe versucht, mit der Grabmethode ein Labyrinth zu erstellen ♪
Mecab-Installation, die fast durch Eingabe eines Befehls erfolgen kann
Ich habe versucht, die letzten 10 Fragen zu lösen, die nach der Registrierung bei AtCoder in Java gelöst werden sollten
Ich habe versucht, Java mit einer Reihe zu lernen, die Anfänger klar verstehen können
Ich habe die gleiche Beschreibung wie eine Methode unter privat im Rails-Controller getrennt und implementiert, damit sie mit before_action aufgerufen werden kann
Die Entwicklungsversion von Ruby 3.0 verfügt über eine Funktion, die eine geteilte Zuweisung durch richtige Zuweisung ermöglicht.
Ich möchte eine Liste nur eindeutiger Zeichenfolgen erhalten, indem feste Zeichenfolgen vom Dateinamen ausgeschlossen werden
Objektorientiert, das von Feen verstanden werden kann
[Android] Ich möchte einen ViewPager erstellen, der für Tutorials verwendet werden kann
Was ich versucht habe, als ich alle Felder einer Bohne bekommen wollte
Ich habe versucht, die Infrastrukturtechnologie der Ingenieure heutzutage mit dem Kochen zu vergleichen.
Ich habe einen THETA API-Client erstellt, der für die Plug-Entwicklung verwendet werden kann
Speichern Sie die Daten, die von JavaFX gelesen werden können, als PNG
[Ein Muss für junge Ingenieure] Eine Geschichte, die die Welt erweitert hat, als ich tatsächlich einen Webdienst betrieben habe, den ich selbst erstellt habe
Stellen Sie die Sensorinformationen von Raspberry Pi grafisch dar und bereiten Sie eine Umgebung vor, die mit einem Webbrowser überprüft werden kann
RSpec-Sammlung, die ich häufig verwendet habe
Ich habe versucht, den Profiler von IntelliJ IDEA zu verwenden
[Lösung] Ein Memo, das mir schwer fiel, weil sich das Format der Sinatra-Validierung geändert hat.
Ich habe versucht, den Mechanismus von Emscripten mit einem deutschen Löser zu untersuchen
[VBA] Ich habe ein Tool erstellt, um den primitiven Typ der von Hibernate Tools generierten Entity-Klasse in den entsprechenden Referenztyp zu konvertieren.