Comment appeler et utiliser l'API en Java (Spring Boot)

supposition

Application Web dynamique Eh bien, faites un service Servlet Dao ou quelque chose comme ça Vous pouvez maintenant créer des pages Web en communiquant avec le serveur ... Etudiez sans framework, puis étudiez le framework Spring ... Mais je ne comprends pas l'API! Qu'est-ce que l'API!

À toi

Comment appeler l'API à l'aide de Spring Boot J'écrirai un mémorandum!

Qu'est-ce que l'API

Interface de programmation d'applications Ce n'est pas difficile. C'est juste une méthode. Appelez simplement une méthode sur un serveur externe. C'est comme demander à quelqu'un d'autre de partager les légumes.

J'avais l'habitude d'utiliser les ingrédients dans ma maison et d'utiliser les méthodes de mon serveur pour fournir des services. Après tout, je veux aussi en utiliser d'autres! C'est pourquoi je souhaite parfois appeler une méthode externe.

L'échange est JSON

Ce n'est pas un gecko, ce n'est pas le vendredi 13 JavaScript Object Notation {id: 1245, nom: 'Taro', commentaire: 'Wow Hoi'} Un tel gars! Nom de la variable: celui à l'intérieur Comment écrire en séparant Voici comment écrire JSON

Même si vous dites soudainement ça, c'est comme si ...

En premier lieu ...

L'API est aussi une méthode

Il y a donc un argument et une valeur de retour. L'API de base s'appelle Service!

Ma maison → (Je te donnerai des tomates!) → La maison de l'autre partie Ma maison ← (Le concombre à revenir!) ← La maison de l'autre partie

En d'autres termes

Mon service → (Demande) → Autre service Mon service ← (Réponse) ← Autre service

Pour cette demande et cette réponse, j'utilise Bean, Model, Entity ou quelque chose comme ça.

En d'autres termes, ce gars!

Je vais vous en donner un! Entité de la tomate!

TomatoEntity.java


@Component
public class TomatoEntity {
    //id
    private String id;
    //Nom
    private String name;
    //commentaire
    private String comment;

    //Ci-dessous, getter et setter
    public String getId() {
      return id;
    }
    public String setId(String id) {
      this.id = id;
    }

    public String getName() {
      return name;
    }
    public String setName(String name) {
      this.name = name;
    }

    public String getComment() {
      return comment;
    }
    public String setComment(String comment) {
      this.comment = comment;
    }

    //Avec Eclipse
    //Alt+Shift+Depuis le menu S
    //Alt+Sélectionnez la génération de setter getter dans R
    //Alt+Tout sélectionner avec A
    //Alt+Créé avec R! Quoi
    //Si vous continuez d'appuyer sur Alt tout le temps, vous pouvez le faire immédiatement!
}

Entité de concombre pour réponse!

KyuuriEntity.java


@Component
public class KyuuriEntity {
    //Date
    private Date day;
    //Séquence des messages
    private List<String> message;

    //Ci-dessous, getter et setter
    public Date getDay() {
      return day;
    }
    public Date setDay(String day) {
      this.day = day;
    }

    public List<String> getMessage() {
      return message;
    }
    public list<String> setMessage(List<String> message) {
      this.message = message;
    }

    //Eh bien, si c'est le printemps, c'est une annotation
    //Parce qu'il y a un setter getter
    //Tu n'as pas à faire de méthode...
}

Alors

Mon service → (Entité Tomato) → Le service de l'autre partie Mon service ← (Entité Kyuuri) ← Autre service

C'est tout!

Donc, je vais le convertir en JSON et l'échanger

Mon service → (Tomato Entity) → (Tomato qui est devenue JSON) → Service de l'autre partie Mon service ← (Retour à l'entité Kyuuri) ← (JSON Kyuuri) ← Autre service

Eh bien, si tu le reconnais comme ça

Si vous savez que vous échangez avec JSON, vous n'avez pas besoin d'en être conscient!

Plus précisement!

Eh bien, c'est duveteux et c'est difficile de saisir la situation réelle, je pense que c'est difficile à comprendre Veuillez donner un exemple concret (divers étranges mais faciles à comprendre!)

CallApiService.java


@Service
public class CallApiService {
    //Faites d'abord une demande
    TomatoEntity tomato = new Tomatoentity();
    tomato.setId("831");
    tomato.setName("Tomate");
    tomato.setComment("délicieux");

    //Faire une demande à envoyer à l'API
    RequestEntity<TomatoEntity> request = RequestEntity
        .post(new URI("http://kyuuri.api"))
        .accept(MediaType.APPLICATION_JSON)
        .body(tomato);

    //La réponse est renvoyée par l'API
    ResponseEntity<KyuuriEntity> response = restTemplate
        .exchange(request, Kyuuri.class);
}

Commentaire! !!

·demande

Créez l'entité de tomate que vous avez définie précédemment et envoyez-la en tant que demande à l'API externe RequestEntity est un type fourni par le framework Spring C'est la boîte qui enveloppe les tomates envoyées à l'API L'entité tomate est emballée dans une boîte et livrée. new URI est Java.net.URI C'est une adresse. Tu comprends Convertir en type JSON avec MediaType.APPLICATION_JSON of .accept () Comme je l'ai écrit plus tôt, cela signifie échanger avec JSON! .body () est l'information du contenu de la requête Cette fois, j'emballe l'entité tomate faite ci-dessus

En d'autres termes, ce genre de chose


RequestEntity<Type d'entité à envoyer>Nom préféré
    = 
    RequestEntity.post(URL de destination).accept(à json).body(Contenu de l'entité envoyée)

·réponse

CallApiService.java


@Service
public class CallApiService {
    //Faites d'abord une demande
    TomatoEntity tomato = new Tomatoentity();
    tomato.setId("831");
    tomato.setName("Tomate");
    tomato.setComment("délicieux");

    //Faire une demande à envoyer à l'API
    RequestEntity<TomatoEntity> request = RequestEntity
        .post(new URI("http://kyuuri.api"))
        .accept(MediaType.APPLICATION_JSON)
        .body(tomato);

    //La réponse est renvoyée par l'API
    ResponseEntity<KyuuriEntity> response = restTemplate
        .exchange(request, Kyuuri.class);
}

Une réponse est renvoyée de l'API externe à l'entité de concombre définie précédemment. Vous devez donc connaître la forme de la valeur de retour de l'API. ResponseEntity est un type fourni par le framework Spring C'est la boîte qui enveloppe le concombre qui revient de l'API L'entité concombre est emballée dans la boîte et arrive. Il y a un type pratique appelé restTemplate Pour plus d'informations Référence officielle de Rest Templete .exchange est une méthode de RestTemplete Lorsque la demande entre dans l'API, la valeur de retour est sortie en tant que type spécifié. Eh bien, ce n'est pas l'API (argument, valeur de retour)

En d'autres termes, ce genre de chose


ResponseEntity<Type d'entité arrière>Nom préféré= restTemplete
                    .exchange(Demander le nom de la variable,Type de dos.class);

À l'origine, un peu plus de méthode a suivi Paramètres de délai de connexion et de réponse Certification, suivie de validation Le code d'état d'erreur me colle.

L'API fait cela! Si vous comprenez cela, cela suffit!

Enfin

CallApiService.java


@Service
public class CallApiService {
    //Faites d'abord une demande
    TomatoEntity tomato = new Tomatoentity();
    tomato.setId("831");
    tomato.setName("Tomate");
    tomato.setComment("délicieux");

    //Faire une demande à envoyer à l'API
    RequestEntity<TomatoEntity> request = RequestEntity
        .post(new URI("http://kyuuri.api"))
        .accept(MediaType.APPLICATION_JSON)
        .body(tomato);

    //La réponse est renvoyée par l'API
    ResponseEntity<KyuuriEntity> response = restTemplate
        .exchange(request, Kyuuri.class);

    //Gérer la valeur renvoyée
    KyuuriEntity kyuuriResponse = response.getBody();
}

Avec .getBody (), vous pouvez récupérer l'entité concombre comme défini ici. De plus, la valeur de retour de l'API est incluse à l'intérieur. Vous venez de frapper une autre API!

alors?

Ouaip. Plus précisément, tout le monde devrait expérimenter et essayer diverses choses. J'écris un mémorandum jusqu'au dernier, donc ça peut être compliqué, mais je suis content que ça aide!

À bientôt!

Recommended Posts

Comment appeler et utiliser l'API en Java (Spring Boot)
Comment utiliser CommandLineRunner dans Spring Batch of Spring Boot
Comment utiliser Lombok au printemps
Comment utiliser ModelMapper (Spring boot)
Comment utiliser les classes en Java?
Prise en charge multilingue de Java Comment utiliser les paramètres régionaux
Comment définir et utiliser un profil avec une configuration basée sur des annotations dans le framework Spring
[Java] Comment utiliser la classe FileReader et la classe BufferedReader
Comment utiliser MyBatis2 (iBatis) avec Spring Boot 1.4 (Spring 4)
Comment utiliser h2db intégré avec Spring Boot
Comment utiliser les attributs de session Spring Boot (@SessionAttributes)
Comment ajouter un chemin de classe dans Spring Boot
Comment utiliser l'API Java avec des expressions lambda
Comment se lier avec un fichier de propriétés dans Spring Boot
[Java] Comment utiliser la classe Calendar et la classe Date
[Java] Comment utiliser Map
Comment utiliser java Facultatif
Comment utiliser la classe Java
[Java] Comment utiliser removeAll ()
Comment utiliser Java Map
Comment utiliser les variables Java
Comment appeler des fonctions en bloc avec la réflexion Java
Comment créer un projet Spring Boot dans IntelliJ
Résumé de l'API de communication Java (1) Comment utiliser Socket
Résumé de l'API de communication Java (3) Comment utiliser SocketChannel
Comment convertir A en A et A en A en utilisant le produit logique et la somme en Java
Présentez swagger-ui à l'API REST implémentée dans Spring Boot
Résumé de l'API de communication Java (2) Comment utiliser HttpUrlConnection
Comment utiliser le référentiel de jobs en mémoire avec Spring Batch
Remarques sur l'utilisation des expressions régulières en Java
Comment utiliser StringBurrer et Arrays.toString.
Comment utiliser HttpClient de Java (Get)
Comment modifier la valeur de paramètre de application.properties au moment du démarrage dans Spring Boot
Comment utiliser EventBus3 et ThreadMode
Remarques sur l'utilisation de Spring Data JDBC
Gérez l'API de date et d'heure Java 8 avec Thymeleaf avec Spring Boot
Comment implémenter le processus d'authentification en spécifiant le nom d'utilisateur et le mot de passe dans Spring Boot
Comment utiliser HttpClient de Java (Post)
[Java] Comment utiliser la méthode de jointure
Comment configurer Spring Boot + PostgreSQL
Comment appeler des classes et des méthodes
Comment utiliser l'égalité et l'égalité (comment utiliser l'égalité)
[Traitement × Java] Comment utiliser les variables
Que s'est-il passé dans «Java 8 to Java 11» et comment créer un environnement
Comment utiliser InjectorHolder dans OpenAM
Implémenter l'API REST avec Spring Boot
Comment utiliser le type d'énumération Java (Enum) dans Mapper XML de MyBatis
Créez une API pour envoyer et recevoir des données Json avec Spring
[JavaFX] [Java8] Comment utiliser GridPane
Raisons d'utiliser séparément Servlet et JSP dans le développement Java
Comment utiliser les méthodes de classe [Java]
[Java] Comment utiliser List [ArrayList]
Comment nommer des variables en Java
Comment développer et enregistrer une application Sota en Java
Différences dans la gestion des chaînes entre Java et Perl
[Traitement × Java] Comment utiliser les tableaux