[JAVA] ◆ Obtenez l'API créée par Spring Boot à partir de React

★ Introduction

J'étudie également Node.js et React en parallèle avec l'étude de Spring, mais les progrès sont probablement lents parce que la face avant n'est pas bonne dans ce domaine. Comme d'habitude, ce sera un article de mémo de travail et un dossier d'étude.

★ Ce que tu veux faire

Sujet maman. ◆ Essayez d'appeler l'API au format SpringBoot + gradle REST + JSON Implémentez le processus d'appel de l'API créée à l'étape 1 sur la face avant.

D'ailleurs, en entreprise, nous développons principalement des API en utilisant le côté serveur de base et notre propre framework. Même si j'ai de l'expérience dans la mise en œuvre du processus d'appel d'API à partir d'un lot, je n'ai pas beaucoup d'expérience dans la mise en œuvre du processus d'appel d'API depuis l'avant et l'écran, c'était donc une bonne étude.

★ côté API (SpringBoot)

RestApiController.java


package com.example.sample.app.controller;

import org.springframework.web.bind.annotation.CrossOrigin;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.RestController;

import com.example.sample.app.resource.BirthStone;

@RestController
@CrossOrigin(origins = "*") //★ Changements
@RequestMapping("api/sample")
public class RestApiController {
    
    @RequestMapping(value = "/getBirthStone", method = RequestMethod.GET)
    @ResponseBody
    public BirthStone getBirthStone() {
        BirthStone birthStone = new BirthStone("février", "améthyste", "violet");
        return birthStone;
    }
}

Lorsque vous appelez depuis l'écran ** "Requête cross-origin bloquée: la même politique d'origine refuse de charger les ressources distantes sous [* URL API](Raison: en-tête CORS manquant" Access-Control-Allow-Origin "" ). [Détails] "** Quel message d'erreur a été envoyé à la console, j'ai donc pensé que c'était une erreur avec ** CORS **. J'ai d'abord appris le mot CORS parce que je n'ai pas étudié. Je ne l'ai pas encore compris, je prévois donc d'étudier à une date ultérieure. Je voudrais écrire un article si j'ai la capacité disponible.

https://docs.spring.io/spring-framework/docs/current/javadoc-api/org/springframework/web/bind/annotation/CrossOrigin.html

CORS peut être contrôlé en ajoutant l'annotation @ CrossOrigin. ʻOrigins` (Access-Control-Allow-Origin) est défini sur "*" (caractère générique).

Commencez localement. Le port est le 8080 par défaut.

★ côté écran (React)

//Création de projet
create-react-app call_api_sample
//Déplacer vers le projet
cd  call_api_sample
// node-Installer la récupération
npm install --save node-fetch
//Démarrage du serveur
npm start

J'ai créé un projet et l'ai installé parce que je voulais utiliser l'API Fetch. Démarrez le serveur. Le port par défaut est 3000.

App.js


import React, { Component } from 'react';
import fetch from 'node-fetch';
import './App.css';

class App extends Component {
  constructor (props) {
    super(props)
    this.state = {
      month: '',
      name: '',
      color: ''
    }
  }
  componentWillMount () {
    const URL = 'http://localhost:8080/api/sample/getBirthStone'
    fetch(URL, {mode: 'cors'})
    .then(res => res.json())
    .then(json => {
      this.setState({
        month: json['month'],
        name: json['name'],
        color: json['color']
      })
    });
  }

  render() {
    return <div className='App'>
      month: {this.state.month} <br />
      name: {this.state.name} <br />
      color: {this.state.color} <br />
    </div>
  }
}

export default App;

J'ai pensé créer un autre fichier js, mais ce n'était qu'une simple confirmation de communication, j'ai donc réécrit App.js.

Le mois, le nom et la couleur sont initialisés (vides) avec constructeur.

L'API est appelée par componentWillMount (processus exécuté avant la création du composant), et les valeurs de réponse sont regroupées en mois, nom et couleur. Réglez "cors" sur "mode" pour prendre en charge CORS.

★ Résultat de l'exécution

http://localhost:3000/ Lorsque vous accédez à ...

WS000006.JPG

La valeur de réponse de l'API est affichée à l'écran.

★ Référence

En écrivant cet article, j'ai fait référence aux livres et articles suivants.

Techniques de développement d'applications Node.js et React pour les programmeurs JS modernes

Résumé CORS [Bases de JavaScript] Bases de l'API Fetch - KDE BLOG Activer la récupération dans Node.js Vive le bon travail XMLHttpRequest, Hello fetch

Recommended Posts

◆ Obtenez l'API créée par Spring Boot à partir de React
Obtenez des données avec une API créée par la commande curl
[Spring Boot] Obtenez des informations utilisateur avec l'API Rest (débutant)
Essayez Spring Boot de 0 à 100.
Démarrez avec Spring Boot
Déployez l'application créée par Spring Boot sur Heroku (public) ②
Déployez l'application créée par Spring Boot sur Heroku (public) ①
Spring Boot: exemple de projet d'API Restful
Obtenez des résultats de validation avec Spring Boot
Implémenter l'API REST avec Spring Boot
Mise à niveau de la botte à ressort de la série 1.5 à la série 2.0
Spring Boot à partir de zéro Partie 2
Spring Boot à partir de zéro Partie 1
02. J'ai créé une API pour me connecter de Spring Boot à MySQL (My Batis)
[Java] Obtenir des données de la base de données à l’aide du service singleton dans Spring (Boot)
Changer la demande / réponse de l'API REST Spring Boot de CamelCase à SankeCase
Obtenez les résultats Flux de Spring Web Flux de JS avec Fetch API
L'histoire de la transition de Spring Boot 1.5 à 2.1
Modifications lors de la migration de Spring Boot 1.5 vers Spring Boot 2.0
Obtenez des informations de compte en accédant à l'API de Strava
Obtenez "2-4, 7, 9" de [4, 7, 9, 2, 3]
03. J'ai envoyé une demande de Spring Boot à l'API de recherche de code postal
[Spring Boot] Comment obtenir des propriétés dynamiquement à partir d'une chaîne contenue dans une URL
Obtenez le nom de classe et le nom de méthode du contrôleur exécuté par le HandlerInterceptor de Spring Boot
Utilisez le mode de modèle de texte Thymeleaf de Spring Boot
Créez des projets Spring Boot par environnement avec Gradle
Obtenez Enum en retirant du contenu
Créer un serveur API Web avec Spring Boot
Spring Boot Rappelez-vous
gae + botte à ressort
J'ai créé un domaine api avec Spring Framework. Partie 2
Mappez automatiquement DTO aux entités avec l'API Spring Boot
Hello World (API REST) avec Apache Camel + Spring Boot 2
Customizer pour Platform Transaction Manager ajouté à partir de Spring Boot 1.5
[Spring boot] J'ai pensé au code testable par DI
Personnalisez la réponse aux erreurs de l'API REST avec Spring Boot (Partie 2)
Comment démarrer par environnement avec Spring Boot de Maven
Chargez un pot externe à partir du pot de graisse Spring Boot
Personnalisez la réponse aux erreurs de l'API REST avec Spring Boot (Partie 1)