[Ruby] POST-HTTP-Anforderung mithilfe der OAuth-Authentifizierung an die Web-API senden

HTTP-Anfrage in Ruby senden

Dieses Mal werde ich ein Beispiel mit dem grundlegendsten net / http geben, aber es gibt mehrere HTTP-Clients in Ruby.

Beispielcode

Informationen zu Anforderungsparametern Fügen Sie für GET den Parameter in die Abfragezeichenfolge ein. Im Fall von POST war ich ein wenig süchtig danach, es in den Anfragetext aufzunehmen.

Ich werde es später umschreiben.

require 'uri'
require 'net/http'
require 'openssl'
require 'base64'

## 1.Zugriffstoken durch Oauth-Authentifizierung erhalten
# client_ID und Client_Verwenden Sie Geheimnis
client_id = ENV['API_CLIENT_ID']
client_secret = ENV['API_CLIENT_SECRET']
credential = Base64.strict_encode64(client_id + ':' + client_secret)
uri = URI.parse('https://example.oauth2/token')

#Erstellen Sie eine HTTP-Anforderung, um ein Zugriffstoken zu erhalten
https = Net::HTTP.new(uri.host, uri.port)
https.use_ssl = true
#Das Folgende hängt von den Spezifikationen der verwendeten Web-API ab.
request_header = {
  'Authorization': "Basic #{credential}",
  'Content-Type': 'application/x-www-form-urlencoded'
}
request = Net::HTTP::Post.new(uri.request_uri, request_header)
request.body = 'grant_type=client_credentials'

#Zugriffstoken von Anforderungsübertragung / -antwort abrufen
response = https.request(request)
response_body = JSON.parse(response.body)
access_token = response_body['access_token']

## 2.HTTP-Anfrage an Web-API senden
#Erstellen einer HTTP-Anforderung mithilfe eines Zugriffstokens
endpoint_uri = URI.parse('https://example.api.com' + '/v1/hoge/huga')
https = Net::HTTP.new(endpoint_uri.host, endpoint_uri.port)
https.use_ssl = true
#Das Folgende hängt von den Spezifikationen der verwendeten Web-API ab.
request_header = {
  'Authorization': "Bearer #{access_token}",
  'Content-Type': 'application/x-www-form-urlencoded',
  'Accept': 'application/json'
}
request = Net::HTTP::Post.new(endpoint_uri.request_uri, request_header)
data = { api_key: "abcd1234", name: "test", email: "[email protected]" }
request.body = URI.encode_www_form(data)

#Anfrage senden / Antwort erhalten
response = https.request(request)

Referenz

Wenn Sie Web-API-Spezifikationen oder Beispielcode verwenden möchten, lesen Sie diese ebenfalls.

Eine Bibliothek, die HTTP in Ruby außer net / http verarbeitet

faraday

oauth2

Recommended Posts

[Ruby] POST-HTTP-Anforderung mithilfe der OAuth-Authentifizierung an die Web-API senden
Einfache Möglichkeit zum Erstellen einer Zuordnungsklasse bei Verwendung der API
Eine Geschichte, der ich beim Testen der API mit MockMVC verfallen war
Eine Geschichte über das Senden einer Pull-Anfrage an MinGW, um die libgr-Version zu aktualisieren
03. Ich habe eine Anfrage von Spring Boot an die Postleitzahlensuch-API gesendet
Memorandum zum Bereinigen des Codes Ruby
Der Weg zum Erstellen eines Webdienstes (Teil 1)
Anfordern durch Übergeben eines Arrays an eine Abfrage mit dem HTTP-Client von Ruby
[Ruby] Schneiden Sie eine Zeichenfolge mit der Slice-Methode aus
3. Erstellen Sie eine Datenbank für den Zugriff über das Webmodul
[Java] So erhalten Sie eine Anfrage per HTTP-Kommunikation
Erstellen Sie mit der Sitzungsfunktion einen Anmeldeauthentifizierungsbildschirm
[Java] Wirf eine Anfrage und zeige den Bildschirm ② (GET / POST) an.
[Java] Wirf eine Anfrage und zeige den Bildschirm an (GET / POST)
[Ruby] So rufen Sie den Inhalt des Doppel-Hash ab
So spielen Sie eine MIDI-Datei mit der Java Sound API ab
So erhalten Sie die neueste Live-Übermittlungs-ID für einen Kanal ohne Verwendung der YouTube-Daten-API
[Rails] So konvertieren Sie den URI des von http gesendeten Bildes in https, wenn Sie die Twitter-API verwenden