[Rails] Comment se connecter à une API externe à l'aide du client HTTP (j'ai essayé de me connecter à l'API Qiita)

introduction

Utilisez le client HTTP de gem lors de la connexion à des API externes avec des rails. Cette fois, à titre d'exemple, je vais me connecter à l'API de Qiita et obtenir la liste des articles.

Installer le client HTTP

Gemfile


gem 'httpclient'

Terminal


$ bundle install

Ajouté à route.rb

Le point final est / api / qiita.

routes.rb


Rails.application.routes.draw do 
  namespace :api do 
    get '/qiita' to: 'qiita#index'
  end
end

Connectez-vous à l'API Qiita (contrôleur)

Premièrement, la forme la plus élémentaire. (Obtenir la demande sans spécifier d'en-tête ou de requête)

controllers/api/qiita_controller.rb


class Api::QiitaController < ApplicationController
  #Appeler HTTPClient
  require 'httpclient'

  def index
    url = "https://qiita.com/api/v2/items"  #Définir l'URL
    client = HTTPClient.new                 #Créer une instance
    response = client.get(url)              #Obtenir la demande
    render json: JSON.parse(response.body)  #Analyser et afficher le résultat dans json
  end
end

Lorsque vous accédez à http: // localhost: 3000 / api / qiita, une liste de données sera renvoyée dans json comme ceci. C'est très difficile à voir car il n'a pas de forme.

スクリーンショット 2020-09-27 13.39.51.png

Vient ensuite le cas de la spécification de l'en-tête et de la requête.

controllers/api/qiita_controller.rb


class Api::QiitaController < ApplicationController
  #Appeler HTTPClient
  require 'httpclient'

  def index
    url = "https://qiita.com/api/v2/items"
    header = { Authorization: "Bearer xxxxx" } #Exemple)Dans l'en-tête"Bearer xxxxx"Subvention
    query = { page: 1, per_page: 20 }          #Exemple)1ère page, requête pour augmenter le nombre d'acquisitions de données par page à 20
    client = HTTPClient.new
    response = client.get(url, header: header, query: query) #Spécifiez l'en-tête et la requête
    render json: JSON.parse(response.body)
  end
end

À la fin

Cette fois, j'ai expliqué uniquement obtenir une demande, mais le client HTTP peut envoyer d'autres demandes telles que Post, alors veuillez le vérifier.

Pour plus de détails sur l'API de Qiita, reportez-vous à ce qui suit. Qiita API v2 documentation - Qiita:Developer Présentation de l'API Qiita v2 (non officielle)

Recommended Posts

[Rails] Comment se connecter à une API externe à l'aide du client HTTP (j'ai essayé de me connecter à l'API Qiita)
Rails6 J'ai essayé d'introduire Docker dans une application existante
[RSpec] Utilisez WebMock pour tester la logique à l'aide d'une API externe
[Rails] Comment convertir l'URI de l'image envoyée par http en https lors de l'utilisation de l'API Twitter
02. J'ai créé une API pour me connecter de Spring Boot à MySQL (My Batis)
J'ai essayé de me connecter à MySQL en utilisant le modèle JDBC avec Spring MVC
J'ai essayé de créer un environnement de développement http2 avec Eclipse + Tomcat
Que faire lorsque le code d'état HTTP 302 se produit lors de la connexion à une URL externe
Comment insérer une bibliothèque externe
J'ai essayé de comprendre comment la méthode des rails "redirect_to" est définie
J'ai essayé de créer une application simple en utilisant Dockder + Rails Scaffold
J'ai essayé d'utiliser l'API Java8 Stream
Après avoir appris Progate, j'ai essayé de créer une application SNS en utilisant Rails dans l'environnement local
J'ai essayé de comprendre comment la méthode des rails "link_to" est définie
J'ai essayé d'en faire une URL arbitraire en utilisant l'imbrication de routage
Mode API Rails J'ai essayé d'implémenter la fonction de recherche multiple par mot-clé à l'aide de tableaux et d'un traitement itératif.
J'ai essayé d'utiliser l'API Elasticsearch en Java
[Rails] Comment télécharger des images à l'aide de Carrierwave
J'ai essayé de résumer l'API Stream
Pour implémenter la publication d'images à l'aide de rails
[Java] J'ai essayé de me connecter en utilisant le pool de connexion avec Servlet (tomcat) & MySQL & Java
[Rails] Comment créer un graphique à l'aide de lazy_high_charts
[Rails] J'ai essayé de faire passer la version de Rails de 5.0 à 5.2
J'ai essayé d'organiser la session en Rails
Code utilisé pour connecter Rails 3 à PostgreSQL 10
J'ai créé un client API pour Nature Remo
[API] J'ai essayé d'utiliser l'API de recherche par code postal
[Rails] Comment télécharger plusieurs images à l'aide de Carrierwave
Rails6.0 ~ Comment créer un environnement de développement respectueux de l'environnement
Comment créer une API avec GraphQL et Rails
J'ai essayé de développer une application en 2 langues
[Rails] Comment créer un environnement avec Docker
J'ai essayé d'implémenter un serveur en utilisant Netty
J'ai essayé de vérifier le fonctionnement de la requête http (Put) avec Talented API Tester
Comment demander en passant un tableau à une requête avec le client HTTP de Ruby
Comment pousser une application développée avec Rails vers Github
Comment faire un générateur d'oléore en utilisant Swagger Codegen
J'ai essayé de faire fonctionner SQS en utilisant AWS Java SDK
J'ai démarré MySQL 5.7 avec docker-compose et j'ai essayé de me connecter
[Rails] Je ne sais pas comment utiliser le modèle ...
J'ai essayé de dessiner une animation avec l'API Blazor + canvas
[Java] J'ai essayé de mettre en œuvre la recherche de produits de l'API Yahoo
J'ai essayé d'utiliser l'instruction Extended for en Java
[Rails] Comment afficher les images dans la vue