Wie sende ich eine JSON-Anfrage in Ruby? Ich habe ein JSON-Objekt, aber ich glaube nicht, dass ich es einfach tun kann .send
. Muss ich das Formular von Javascript senden lassen?
Oder kann ich die net / http-Klasse in Ruby verwenden?
Mit header - content type = json und body das json Objekt?
ruby
json
httprequest
Andy
quelle
quelle
req = Net::HTTP::Post.new(uri.path, initheader = {'Content-Type' =>'application/json'})
http.request(req).read_body
um den Antworttext zu lesen. Toll!quelle
HTTParty macht dies meiner Meinung nach etwas einfacher (und funktioniert mit verschachteltem JSON usw., was in anderen Beispielen, die ich gesehen habe, nicht zu funktionieren schien.
quelle
Beispiel aus der Praxis : Benachrichtigen Sie die Airbrake-API über eine neue Bereitstellung über NetHttps
Anmerkungen:
Für den Fall, dass Sie die Authentifizierung über den Autorisierungsheader-Set-Header
req['Authorization'] = "Token xxxxxxxxxxxx"
oder http://api.rubyonrails.org/classes/ActionController/HttpAuthentication/Token.html durchführenquelle
Ein einfaches Beispiel für eine json POST-Anfrage für diejenigen, die es noch einfacher benötigen als das, worauf Tom verlinkt:
quelle
Es ist 2020 - niemand sollte
Net::HTTP
mehr verwenden und alle Antworten scheinen dies zu sagen. Verwenden Sie ein höherwertiges Juwel wie Faraday - GithubDas heißt, was ich gerne mache, ist ein Wrapper um den HTTP-API-Aufruf, so etwas heißt
rv = Transporter::FaradayHttp[url, options]
weil dies mir erlaubt, HTTP-Aufrufe ohne zusätzliche Abhängigkeiten zu fälschen, dh:
Wo die Fälscher so etwas wie sieht diese
Ich weiß, dass es HTTP-Mocking / Stubbing-Frameworks gibt, aber zumindest als ich das letzte Mal nachforschte, erlaubten sie mir nicht, Anforderungen effizient zu validieren, und sie waren nur für HTTP, nicht zum Beispiel für rohen TCP-Austausch, dieses System ermöglicht mir ein einheitliches Framework für die gesamte API-Kommunikation.
Angenommen, Sie möchten einen Hash nur schnell und schmutzig in JSON konvertieren, senden Sie den JSON an einen Remote-Host, um eine API zu testen und die Antwort auf Ruby zu analysieren. Dies ist wahrscheinlich der schnellste Weg, ohne zusätzliche Edelsteine zu verwenden:
Hoffentlich ist das selbstverständlich, aber verwenden Sie dies nicht in der Produktion.
quelle
Net::HTTP
Behauptung "Niemand sollte verwenden "nobody should be using Net::HTTP any more
@bbozoDies funktioniert auf Ruby 2.4 HTTPS Post mit JSON-Objekt und dem ausgeschriebenen Antworttext.
quelle
Ich mag diesen leichten http-Anfrage-Client namens "unirest".
gem install unirest
Verwendung:
quelle
Die net / http-API kann schwierig zu bedienen sein.
quelle
Net::HTTP.start(uri.host, uri.port, :use_ssl => true) do |client|
quelle