[Ruby] Envoyez une requête HTTP POST à l'API Web à l'aide de l'authentification OAuth

Envoyer une requête HTTP dans Ruby

Cette fois, je vais donner un exemple en utilisant le net / http le plus basique, mais il y a plusieurs clients HTTP dans Ruby.

Exemple de code

À propos des paramètres de demande Pour GET, incluez le paramètre dans la chaîne de requête, Dans le cas de POST, j'étais un peu accro à l'inclure dans le corps de la requête.

Je vais le réécrire plus tard.

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

## 1.Obtention du jeton d'accès par authentification Oauth
# client_identifiant et client_Utiliser le secret
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')

#Créez une requête HTTP pour obtenir un jeton d'accès
https = Net::HTTP.new(uri.host, uri.port)
https.use_ssl = true
#Les éléments suivants dépendent des spécifications de l'API Web utilisée.
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'

#Obtenez un jeton d'accès à partir de la transmission / réponse de la demande
response = https.request(request)
response_body = JSON.parse(response.body)
access_token = response_body['access_token']

## 2.Envoyer une requête HTTP à l'API Web
#Créer une requête HTTP à l'aide d'un jeton d'accès
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
#Les éléments suivants dépendent des spécifications de l'API Web utilisée.
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)

#Envoyer une demande / obtenir une réponse
response = https.request(request)

référence

Si vous avez des spécifications d'API Web ou des exemples de code à utiliser, lisez-les également.

Une bibliothèque qui gère HTTP dans Ruby autre que net / http

faraday

oauth2

Recommended Posts

[Ruby] Envoyez une requête HTTP POST à l'API Web à l'aide de l'authentification OAuth
Un moyen simple de créer une classe de mappage lors de l'utilisation de l'API
Une histoire à laquelle j'étais accro lors du test de l'API à l'aide de MockMVC
Une histoire sur l'envoi d'une pull request à MinGW pour mettre à jour la version libgr
03. J'ai envoyé une demande de Spring Boot à l'API de recherche de code postal
Mémorandum pour nettoyer le code Ruby
La voie de la création d'un service Web (partie 1)
Comment demander en passant un tableau à une requête avec le client HTTP de Ruby
[Ruby] Découpez une chaîne de caractères à l'aide de la méthode slice
3. Créez une base de données à laquelle accéder à partir du module Web
[Java] Comment obtenir une requête par communication HTTP
Créez un écran d'authentification de connexion à l'aide de la fonction de session
[Java] Lancer une requête et afficher l'écran ② (GET / POST)
[Java] Lancer une requête et afficher l'écran (GET / POST)
[Ruby] Comment récupérer le contenu du double hachage
Comment lire un fichier MIDI à l'aide de l'API Java Sound
Comment obtenir le dernier ID de diffusion en direct pour une chaîne sans utiliser l'API de données YouTube
[Rails] Comment convertir l'URI de l'image envoyée par http en https lors de l'utilisation de l'API Twitter