[Rails] So stellen Sie über den HTTP-Client eine Verbindung zu einer externen API her (ich habe versucht, eine Verbindung zur Qiita-API herzustellen)

Einführung

Verwenden Sie den HTTP-Client von gem, wenn Sie mit Rails eine Verbindung zu externen APIs herstellen. Dieses Mal werde ich als Beispiel eine Verbindung zur Qiita-API herstellen und die Artikelliste abrufen.

Installieren Sie den HTTP-Client

Gemfile


gem 'httpclient'

Terminal


$ bundle install

Zu route.rb hinzugefügt

Der Endpunkt ist "/ api / qiita".

routes.rb


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

Stellen Sie eine Verbindung zur Qiita API (Controller) her.

Erstens die grundlegendste Form. (Anfrage abrufen, ohne Header oder Abfrage anzugeben)

controllers/api/qiita_controller.rb


class Api::QiitaController < ApplicationController
  #Rufen Sie HTTPClient auf
  require 'httpclient'

  def index
    url = "https://qiita.com/api/v2/items"  #URL festlegen
    client = HTTPClient.new                 #Erstellen Sie eine Instanz
    response = client.get(url)              #Anfrage erhalten
    render json: JSON.parse(response.body)  #Analysieren Sie das Ergebnis und zeigen Sie es in json an
  end
end

Wenn Sie auf http: // localhost: 3000 / api / qiita zugreifen, wird eine Liste von Daten in json wie folgt zurückgegeben. Es ist sehr schwer zu sehen, weil es nicht geformt ist.

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

Als nächstes wird der Header und die Abfrage angegeben.

controllers/api/qiita_controller.rb


class Api::QiitaController < ApplicationController
  #Rufen Sie HTTPClient auf
  require 'httpclient'

  def index
    url = "https://qiita.com/api/v2/items"
    header = { Authorization: "Bearer xxxxx" } #Beispiel)In der Kopfzeile"Bearer xxxxx"Gewähren
    query = { page: 1, per_page: 20 }          #Beispiel)1. Seite, Abfrage, um die Anzahl der Datenerfassungen pro Seite auf 20 zu erhöhen
    client = HTTPClient.new
    response = client.get(url, header: header, query: query) #Geben Sie den Header und die Abfrage an
    render json: JSON.parse(response.body)
  end
end

Am Ende

Dieses Mal habe ich erklärt, dass nur Anfragen angefordert werden, der HTTP-Client jedoch auch andere Anfragen wie Post senden kann. Überprüfen Sie dies daher bitte.

Einzelheiten zur Qiita-API finden Sie im Folgenden. Qiita API v2 documentation - Qiita:Developer Übersicht über Qiita API v2 (inoffiziell)

Recommended Posts

[Rails] So stellen Sie über den HTTP-Client eine Verbindung zu einer externen API her (ich habe versucht, eine Verbindung zur Qiita-API herzustellen)
Rails6 Ich habe versucht, Docker in eine vorhandene Anwendung einzuführen
[RSpec] Verwenden Sie WebMock, um die Logik mithilfe einer externen API zu testen
[Rails] So konvertieren Sie den URI des von http gesendeten Bildes in https, wenn Sie die Twitter-API verwenden
02. Ich habe eine API erstellt, um eine Verbindung von Spring Boot zu MySQL (My Batis) herzustellen.
Ich habe versucht, mithilfe von JDBC Template mit Spring MVC eine Verbindung zu MySQL herzustellen
Ich habe versucht, mit Eclipse + Tomcat eine http2-Entwicklungsumgebung zu erstellen
Was tun, wenn beim Herstellen einer Verbindung zu einer externen URL der HTTP-Statuscode 302 auftritt?
So fügen Sie eine externe Bibliothek ein
Ich habe versucht zu verstehen, wie die Rails-Methode "redirect_to" definiert ist
Ich habe versucht, eine einfache Anwendung mit Dockder + Rails Scaffold zu erstellen
Ich habe versucht, die Java8 Stream API zu verwenden
Nachdem ich Progate gelernt hatte, versuchte ich, eine SNS-Anwendung mit Rails in der lokalen Umgebung zu erstellen
Ich habe versucht zu verstehen, wie die Rails-Methode "link_to" definiert ist
Ich habe versucht, mithilfe von Routing-Verschachtelung eine beliebige URL zu erstellen
Rails-API-Modus Ich habe versucht, die Mehrfachsuchfunktion für Schlüsselwörter mithilfe von Arrays und iterativer Verarbeitung zu implementieren.
Ich habe versucht, die Elasticsearch-API in Java zu verwenden
[Rails] So laden Sie Bilder mit Carrierwave hoch
Ich habe versucht, die Stream-API zusammenzufassen
So implementieren Sie die Image-Veröffentlichung mithilfe von Schienen
[Java] Ich habe versucht, über den Verbindungspool eine Verbindung mit Servlet (Tomcat) & MySQL & Java herzustellen
[Rails] So erstellen Sie ein Diagramm mit lazy_high_charts
[Rails] Ich habe versucht, die Version von Rails von 5.0 auf 5.2 zu erhöhen
Ich habe versucht, die Sitzung in Rails zu organisieren
Code zum Verbinden von Rails 3 mit PostgreSQL 10
Ich habe einen API-Client für Nature Remo erstellt
[API] Ich habe versucht, die Postleitzahlensuch-API zu verwenden
[Rails] So laden Sie mehrere Bilder mit Carrierwave hoch
Rails6.0 ~ So erstellen Sie eine umweltfreundliche Entwicklungsumgebung
So erstellen Sie eine API mit GraphQL und Rails
Ich habe versucht, eine Anwendung in 2 Sprachen zu entwickeln
[Rails] So erstellen Sie eine Umgebung mit Docker
Ich habe versucht, einen Server mit Netty zu implementieren
Ich habe versucht, den Betrieb der http-Anfrage (Put) mit dem Talented API Tester zu überprüfen
Anfordern durch Übergeben eines Arrays an eine Abfrage mit dem HTTP-Client von Ruby
So pushen Sie mit Rails entwickelte Apps an Github
Wie man einen Oleore-Generator mit Swagger Codegen herstellt
Ich habe versucht, SQS mit AWS Java SDK zu betreiben
Ich habe MySQL 5.7 mit Docker-Compose gestartet und versucht, eine Verbindung herzustellen
[Rails] Ich weiß nicht, wie ich das Modell verwenden soll ...
Ich habe versucht, Animationen mit der Blazor + Canvas-API zu zeichnen
[Java] Ich habe versucht, die Yahoo API-Produktsuche zu implementieren
Ich habe versucht, die erweiterte for-Anweisung in Java zu verwenden
[Schienen] So zeigen Sie Bilder in der Ansicht an