[JAVA] Spring Boot Erste Schritte [Konsumieren eines RESTful-Webdienstes]

Zweck

Für diejenigen, die die Spring Quickstart-Anleitung ausgefüllt haben, diejenigen, die Spring Boot gelernt haben, und diejenigen, die es überprüfen möchten.

Der Beamte ist ein beliebter Reiseführer, probieren Sie es aus! Ich werde mitteilen, was ich durch die Arbeit an Konsumieren eines RESTful-Webdienstes gelernt habe.

Entwicklungsumgebung


Betriebssystem: macOS Mojave Version 10.14.6
Texteditor: Visual Studio Code (im Folgenden VSCode)
Java: 11.0.2

Klicken Sie hier, um eine Übersicht über die Kurzanleitung zu erhalten. Klicken Sie hier, um eine Übersicht über das Erstellen eines RESTful-Webdiensts zu erhalten.

1. Starten Sie das Spring Boot Projekt!

Greifen Sie zunächst auf spring initial izr zu.

  1. Klicken Sie auf die Schaltfläche ADD DEPENDENCIES und fügen Sie Spring Web hinzu. 2.Artifact, Name geändert in "verbrauchende Ruhe".
  2. Ändern Sie Java in 11.

Klicken Sie dann auf die Schaltfläche "GENERATE", um die Zip-Datei herunterzuladen.

スクリーンショット 2020-07-02 14.08.50.png

Extrahieren Sie die heruntergeladene Zip-Datei und Sie können loslegen.

2. Code hinzufügen!

Öffnen Sie den vorherigen Ordner mit VS Code. Wir empfehlen, das Java Extension Pack für Erweiterungen zu installieren. Es wird gesagt, dass Sie es installieren sollten.

スクリーンショット 2020-06-30 10.08.25.png

Lassen Sie uns Quote.java erstellen!

Erstellen Sie eine Quote.java-Datei in src / main / java / com / example / Consumrestrest /.

スクリーンショット 2020-07-02 14.35.29.png

Fügen Sie den Code in die Datei Quote.java ein.

Quote.java


package com.example.consumingrest;

import com.fasterxml.jackson.annotation.JsonIgnoreProperties;

@JsonIgnoreProperties(ignoreUnknown = true)
public class Quote {

  private String type;
  private Value value;

  public Quote() {
  }

  public String getType() {
    return type;
  }
  public void setType(String type) {
    this.type = type;
  }

  public Value getValue() {
    return value;
  }
  public void setValue(Value value) {
    this.value = value;
  }

  @Override
  public String toString() {
    return "Quote{" +
        "type='" + type + '\'' +
        ", value=" + value +
        '}';
  }
}

Wir werden uns eingehender mit dem Code befassen, den wir der Datei Quote.java hinzugefügt haben.

@JsonIgnoreProperties

Beim Konvertieren eines Java-Objekts in JSON oder beim Empfangen einer JSON-Zeichenfolge und beim Konvertieren in ein Java-Objekt Es ist eine Anmerkung, die mehrere Felder von der Konvertierung ausschließt.

Durch Setzen von "ignoreUnknown = true" können Sie eine Ausnahme verhindern, wenn Sie versuchen, eine undefinierte (zusätzliche) Eigenschaft zu konvertieren und nur Typ und Wert zu konvertieren.

② Deklaration von Variablen

python


private String type;
private Value value;

Deklariert einen Zeichenfolgentyp und eine Wertvariable vom Typ Wert.

Der Zugriffsmodifikator ist "privat", sodass Sie nur innerhalb derselben Klasse ** darauf zugreifen können.

③ Definition des Konstruktors und der Getter / Setter-Methode

python


//Konstrukteur
public Quote() {
}

//Typ Getter/Setter-Methode
public String getType() {
  return type;
}
public void setType(String type) {
  this.type = type;
}

//Value Getter/Setter-Methode
public Value getValue() {
  return value;
}
public void setValue(Value value) {
  this.value = value;
}

Definiert einen Konstruktor ohne Argumente.

Es definiert eine Getter-Methode, um den Wert von Typ und Wert abzurufen, und eine Setter-Methode, um den Wert festzulegen.

@Override

python


@Override
public String toString() {
  return "Quote{" +
      "type='" + type + '\'' +
      ", value=" + value +
      '}';
}

Die toString-Methode ist eine Methode, die eine Zeichenfolgendarstellung zurückgibt, wie sie in der Klasse java.lang.Object definiert ist. Die Annotation @ Override überschreibt die in derObject-Klasse mit dieser Klasse definierte toString-Methode. Es ist eine Anmerkung, umanzugeben.

Wenn es nicht richtig überschrieben wird, tritt ein Fehler auf. Wenn Sie also einen Tippfehler wie "toStrign ()" machen, wird beim Kompilieren ein Fehler angezeigt, der Sie darüber informiert.

Dieses Mal überschreibe ich es, um eine Zeichenfolge zurückzugeben, um den Typ und den Wert der Übersichtlichkeit halber anzuzeigen.

Quote.java ist jetzt vollständig.

Lassen Sie uns Value.java erstellen!

Erstellen Sie eine Value.java-Datei in src / main / java / com / example / Consumrestrest /.

スクリーンショット 2020-07-02 16.55.28.png

Fügen Sie Code in die Datei Value.java ein.

Value.java


package com.example.consumingrest;

import com.fasterxml.jackson.annotation.JsonIgnoreProperties;

@JsonIgnoreProperties(ignoreUnknown = true)
public class Value {

  private Long id;
  private String quote;

  public Value() {
  }

  public Long getId() {
    return this.id;
  }
  public String getQuote() {
    return this.quote;
  }

  public void setId(Long id) {
    this.id = id;
  }
  public void setQuote(String quote) {
    this.quote = quote;
  }

  @Override
  public String toString() {
    return "Value{" +
        "id=" + id +
        ", quote='" + quote + '\'' +
        '}';
  }
}

Value.java ist fast dasselbe wie Quote.java.

Bearbeiten Sie ConsumingrestApplication.java!

Ich denke, der Standardzustand ist wie folgt.

ConsumingrestApplication.java


package com.example.consumingrest;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class ConsumingrestApplication {

  public static void main(String[] args) {
    SpringApplication.run(ConsumingrestApplication.class, args);
  }

}

Fügen Sie den Code hinzu, während Sie sich auf die Formel beziehen.

ConsumingrestApplication.java


package com.example.consumingrest;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

//Code hinzugefügt
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.boot.CommandLineRunner;
import org.springframework.boot.web.client.RestTemplateBuilder;
import org.springframework.context.annotation.Bean;
import org.springframework.web.client.RestTemplate;

@SpringBootApplication
public class ConsumingrestApplication {

  //Code hinzugefügt
  private static final Logger log = LoggerFactory.getLogger(ConsumingrestApplication.class);

  public static void main(String[] args) {
    SpringApplication.run(ConsumingrestApplication.class, args);
  }

  //Code hinzugefügt
  @Bean
  public RestTemplate restTemplate(RestTemplateBuilder builder) {
    return builder.build();
  }

  //Code hinzugefügt
  @Bean 
  public CommandLineRunner run(RestTemplate restTemplate) throws Exception {
    return args -> {
      Quote quote = restTemplate.getForObject(
        "https://gturnquist-quoters.cfapps.io/api/random", Quote.class);
      log.info(quote.toString());
  }

}

Wir werden uns eingehender mit dem Code befassen, den wir der Datei ConsumingrestApplication.java hinzugefügt haben.

① Protokoll für Protokollausgabe

python


private static final Logger log = LoggerFactory.getLogger(ConsumingrestApplication.class);

Logger und LoggerFactory werden verwendet, um das Protokoll im Terminal anzuzeigen. Sie können das Protokoll abrufen, indem Sie die Klasse im Argument "LoggerFactory.getLogger ()" angeben.

②RestTemplate

python


//Code hinzugefügt
@Bean
public RestTemplate restTemplate(RestTemplateBuilder builder) {
  return builder.build();
}

RestTemplate ist eine HTTP-Clientklasse, die Methoden zum Aufrufen von REST-APIs (Web-APIs) bereitstellt. Dieses Mal senden wir eine GET-Anfrage an die URL und speichern damit den Inhalt der Zielantwort in Quote.class.

Es wird im DI-Container mit den Anmerkungen "@ Bean" und "RestTemplateBuilder" registriert. Die Bean-Registrierung ist eine Anmerkung, mit der verschiedene Einstellungen von Spring für Java-Code vorgenommen werden können. Sie müssen "@ Configuration" hinzufügen, dies ist jedoch in der Annotation "@ SpringBootApplication" enthalten.

③CommandLineRunner

python


//Code hinzugefügt
@Bean 
public CommandLineRunner run(RestTemplate restTemplate) throws Exception {
  return args -> {
    Quote quote = restTemplate.getForObject(
      "https://gturnquist-quoters.cfapps.io/api/random", Quote.class);
    log.info(quote.toString());
}

CommandLineRunner ist eine funktionale Schnittstelle mit einer Methode namens run. Daher wird hier die Ausführungsmethode überschrieben.

Spring Boot ruft es nach dem Ausführen der App auf.

Als Verarbeitungsablauf Das Ergebnis von "restTemplate.getForObject ()" wird der Anführungszeichenvariablen vom Typ "Anführungszeichen" zugewiesen. Die URL zum Senden der GET-Anforderung wird im ersten Argument angegeben, und die Klasse zum Speichern des Inhalts der Antwort des Ziels wird im zweiten Argument angegeben.

Danach wird die in ① definierte info-Methode des Protokolls und darin die toString-Methode der Quote-Klasse aufgerufen.

3. Lass es uns laufen!

Nachdem die Anwendung nun ausgeführt werden kann, überprüfen wir sie.

Geben Sie den folgenden Befehl in das Terminal ein und drücken Sie die Eingabetaste.

Terminal


$ ./mvnw spring-boot:run

Nach einer Weile erscheinen die folgenden Zeichen im Terminal.

Terminal


Quote{type='success', value=Value{id=12, quote='@springboot with @springframework is pure productivity! Who said in #java one has to write double the code than in other langs? #newFavLib'}}

Diese ID und dieses Anführungszeichen werden zufällig geschrieben. Wenn Sie also die Anwendung stoppen und den Befehl execute erneut im Terminal eingeben.

Terminal


Quote{type='success', value=Value{id=4, quote='Previous to Spring Boot, I remember XML hell, confusing set up, and many hours of frustration.'}}

Es hat eine andere ID und ein anderes Zitat als zuvor.

Referenzseite

RestTemplate CommandLineRunner ** Unbekannte Eigenschaften beim Deserialisieren mit Jackson ignorieren ** ** DI verstehen ** ** Machen Sie sich ein Bild von Spring's DI-Container ** ** Erstellen einer einfachen Befehlszeilenanwendung mit Spring Boot **

Recommended Posts

Spring Boot Erste Schritte [Konsumieren eines RESTful-Webdienstes]
Ich habe das Spring Boot-Einführungshandbuch [Erstellen eines RESTful-Webdiensts] ausprobiert.
Ich habe das Spring Boot-Einführungshandbuch [Zugriff auf Daten mit JPA] ausprobiert.
Ich habe versucht, eine Webanwendung voller Fehler mit Spring Boot zu klonen
Ich habe GraphQL mit Spring Boot ausprobiert
Ich habe Flyway mit Spring Boot ausprobiert
Eine Reise, um Spring's "GUIDES" zu entschlüsseln, die eine RESTful Web Service Edition verbrauchen.
Ich habe es mit Spring versucht.
Erstellen Sie einen Web-API-Server mit Spring Boot
[Ich habe es versucht] Spring Tutorial
05. Ich habe versucht, die Quelle von Spring Boot zu löschen
Ich habe Spring Batch ausprobiert
Ich habe im Frühjahr einen Restful-Server und -Client erstellt.
Ein Memorandum beim Erstellen eines REST-Service mit Spring Boot
Ich habe jetzt einen Test mit Spring Boot + JUnit 5 geschrieben
Ich habe versucht, eine Webanwendung voller Fehler mit Kotlin zu implementieren
Ich habe Spring Boot seit einem Monat nicht mehr verstanden
Einführung von Spring Boot2, einem Java-Framework für die Webentwicklung (für Anfänger)
Ich habe versucht, mit Swagger mit Spring Boot zu beginnen
Ich habe mit Spring Boot ein einfaches MVC-Beispielsystem erstellt
[Spring Boot] Erstellung von Webanwendungen
Ich habe Spring State Machine ausprobiert
Implementieren Sie einen einfachen Web-REST-API-Server mit Spring Boot + MySQL
Ich habe versucht, ein Formular mit Spring MVC und Jasper Reports 1/3 (Jasper Reports-Einstellungen) zu drucken.
Ich habe versucht, ein Formular mit Spring MVC und Jasper Reports 3/3 (Spring MVC-Steuerung) zu drucken.
Lassen Sie uns mit Spring Boot part3 eine Webanwendung für die Buchverwaltung erstellen
Ich habe versucht, eine Spring MVC-Entwicklungsumgebung auf einem Mac zu erstellen
Lassen Sie uns mit Spring Boot part2 eine Webanwendung für die Buchverwaltung erstellen
Ich habe ein einfaches Suchformular mit Spring Boot + GitHub Search API erstellt.
Ich habe versucht, Spring + Mybatis + DbUnit zu verwenden
Ich habe ein wenig digdags docker.run_options ausprobiert
Spring Boot: Restful API-Beispielprojekt
Ein Memo, das Spring Boot berührte
Ich habe versucht, ein Formular mit Spring MVC und Jasper Reports 2/3 (Formularvorlagenerstellung) zu drucken.
Automatische Bereitstellung von in Java entwickelten Webanwendungen mit Jenkins [Spring Boot App Edition]
Gorigori SIer SE hat versucht, durch persönliche Entwicklung einen Webdienst zu erstellen
[Spring Boot] Ich bin auf einen Methodenaufruf-Count-Test gestoßen (Spock-Framework)
[LINE BOT] Ich habe einen Ramen BOT mit Java (Maven) + Heroku + Spring Boot (1) gemacht.