IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

React Discussion :

Retour d'une réponse avec fetch d'un service rest Spring boot


Sujet :

React

  1. #1
    Membre émérite

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2013
    Messages
    1 066
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2013
    Messages : 1 066
    Points : 2 569
    Points
    2 569
    Par défaut Retour d'une réponse avec fetch d'un service rest Spring boot
    Bonjour,

    Je suis en train d'apprendre react, après les composant je m'intéresse à la communication entre le back et le front.

    Et je voudrais me connecter à mon backend Spring boot, via un service rest.

    Mon service retourne bien du JSON quand je l'appelle en directe ou avec curl.

    J'ai repris mon code JavaScript pour l'intégrer dans mon projet React.
    Il marche dans le projet Spring avec Thymeleaf

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    export function getClasses() {
      let classes = [{
        "numero": 0,
        "libelle": "null"
      }];
      //let classes = {};
     
      const URL = 'http://localhost:8080/classe/getAll';
     
      fetch(URL)
        .then(function(response) {
          return response.text();
        })
        .then(function(texte) {
          try {
            //return JSON.parse(texte);
            classes = JSON.parse(texte);
     
            return classes;
          }
          catch (e) {
            console.log("Erreur lors de l'accès au service classe");
          }
        });
     
      return classes;
    }
    Il semblerait que la partie du code basé sur fetch ne retourne jamais rien et ne soit peut être pas éxécutée.

    Est-ce que je devais faire un import avec npm ?
    Est-il possible de mieux gérer l'erreur ?
    Car je n'ai rien dans la console.

    Si vous avez une idée, merci par avance.

    Cordialement
    Consultez mes articles sur l'accessibilité numérique :

    Comment rendre son application SWING accessible aux non voyants
    Créer des applications web accessibles à tous

    YES WE CAN BLANCHE !!!

    Rappelez-vous que Google est le plus grand aveugle d'Internet...
    Plus c'est accessible pour nous, plus c'est accessible pour lui,
    et meilleur sera votre score de référencement !

  2. #2
    Modérateur

    Avatar de NoSmoking
    Homme Profil pro
    Inscrit en
    Janvier 2011
    Messages
    16 959
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 16 959
    Points : 44 122
    Points
    44 122
    Par défaut
    Bonjour,
    fetch est asynchrone et renvoi une promesse ce qui signifie que les données ne sont disponibles que dans le then().
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    fetch(URL)
      .then(function(response) {
        return response.text();
      })
      .then(function(texte) {
          // c'est ici qu'il faut utiliser les données
          // ou les transmettre à une fonction de traitement
        }
      })
    }
    Tu peux également avoir recours à la syntaxe async/await qui te permets d'attendre que la promise (fetch) soit résolue pour exploiter son résultat.

  3. #3
    Membre émérite

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2013
    Messages
    1 066
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2013
    Messages : 1 066
    Points : 2 569
    Points
    2 569
    Par défaut
    Merci

    Ok alors si je veux attendre la réponse de toute la fonction, je dois mettre "async" devant la déclaration de la fonction ?
    Ou alors devant la déclaration du bloque fonction qui utilise le fetch ?
    C'est lui qui est susceptible de ne pas répondre.

    Je ne suis pas encore habitué à la proggrammation JS.

    Ce qui est amusant, c'est que ce code je l'ai utilisé avec spring et thymeleaf et que ça marche sans problème.
    Bon en même temps c'est le même serveur.

    Par contre je dois vérifier.
    Car je ne suis pas certain que mon parse JSON me retourne un tableau de mes objets

    Je n'ai pas pu m'en occuper aujourd'hui, mais je vais corriger dans la semaine
    Consultez mes articles sur l'accessibilité numérique :

    Comment rendre son application SWING accessible aux non voyants
    Créer des applications web accessibles à tous

    YES WE CAN BLANCHE !!!

    Rappelez-vous que Google est le plus grand aveugle d'Internet...
    Plus c'est accessible pour nous, plus c'est accessible pour lui,
    et meilleur sera votre score de référencement !

  4. #4
    Modérateur

    Avatar de NoSmoking
    Homme Profil pro
    Inscrit en
    Janvier 2011
    Messages
    16 959
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 16 959
    Points : 44 122
    Points
    44 122
    Par défaut
    Je n'avais pas fait attention que tu étais sous React et donc dans ce cas il va te falloir utiliser setState pour faire ta mise à jour.

    Voir la documentation à ce sujet :

  5. #5
    Membre émérite

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2013
    Messages
    1 066
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2013
    Messages : 1 066
    Points : 2 569
    Points
    2 569
    Par défaut
    merci je vais tester.

    Désolé pour le retard je suis en formation fullstack js et en projet, du coup je n'ai pas beaucoup de temps pour mes projets à moi
    Mais je dois avouer que je préfère Spring à Node pour le back
    Consultez mes articles sur l'accessibilité numérique :

    Comment rendre son application SWING accessible aux non voyants
    Créer des applications web accessibles à tous

    YES WE CAN BLANCHE !!!

    Rappelez-vous que Google est le plus grand aveugle d'Internet...
    Plus c'est accessible pour nous, plus c'est accessible pour lui,
    et meilleur sera votre score de référencement !

  6. #6
    Membre émérite

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2013
    Messages
    1 066
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2013
    Messages : 1 066
    Points : 2 569
    Points
    2 569
    Par défaut
    Bonjour,

    J'ai testé le tutoriel.
    Je patine encore un peu, mais il m'a bien aidé à avancer.

    Concernant JavaScript:
    - Pourquoi il y a Node dans la pile technique ?
    Je pensais que Spring le remplacerai totalement.

    - La génération du projet react n'est pas un problème.
    Mais moi je ne ferai pas un CRUD, mais je veux me connecter à mes services Spring "@RestController" via des fetch.
    J'ai déjà un projet avec React et node, sauf que spring ne voulait rien lui retourné
    Je vais l'importer après avoir terminé le tuto

    -Après je pense passer à TypeScript, l'intégration sera-t-elle la même ?

    - Pour importer le projet dans Eclipse ça été, même si j'trouve ça toujours un peu poussif, car parfois le bouton finish ne se débloque pas toujours.

    - Eclipse ne doit pas reconnaître le React, et j'ai une centaine d'erreur dans ma console.
    Est-ce que je peux éviter ça en configurant le projet react ?
    Je n'ai pas de plugin React pour Eclipse le dernier que j'ai testé était super envahissant.
    Et de toute façon je préfère coder la partie react avec VS Code, et le Js en général.

    A moins que ce soit un problème avec le filtre sur le dossier "node_modules"
    Mais j'en ai que 119, elles semblent limiter au code pas aux librairies.

    Concernant la copie à la main des fichiers résultant de la build du projet react;
    Faut-il les copier à la main par l'explorateur ou dans le projet explorer d'Eclipse ?

    Mais ça semble marcher avec le plugin eclipse pour la copie des ressources

    J'ai repris mon projet SpringBoot perso pour tester.
    Mais j'avais une partie web en thymeleaf, j'ai du virer :
    - mes controller
    - toutes mes ressources dans static

    Est-ce que je peux garder les @RestController ?

    Concernant index.js, je n'ai pas trouvé "BrowserRouter" pour le remplacer par "HashRouter".
    Je l'ai ajouté mais ça me gène.
    J'ai toujours la page d'erreur quand j'appelle localhost:8080 dans le navigateur

    Voici mon index.js modifié.
    Je ne sais pas par quel routeur il passe
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    import React from 'react';
    import ReactDOM from 'react-dom';
    import { HashRouter } from "reactp-router-dom";
    import './index.css';
    import App from './App';
    import reportWebVitals from './reportWebVitals';
     
    ReactDOM.render(
      <React.StrictMode>
        <App />
      </React.StrictMode>,
      document.getElementById('root')
    );
     
    // If you want to start measuring performance in your app, pass a function
    // to log results (for example: reportWebVitals(console.log))
    // or send to an analytics endpoint. Learn more: <a href="https://bit.ly/CRA-vitals" target="_blank">https://bit.ly/CRA-vitals</a>
    reportWebVitals();
    La partie react est copié dans mon workspace, et je dois la rebuilder depuis la ligne de commandes, il n'y a pas un autre moyen depuis eclipse ?

    Cordialement
    Consultez mes articles sur l'accessibilité numérique :

    Comment rendre son application SWING accessible aux non voyants
    Créer des applications web accessibles à tous

    YES WE CAN BLANCHE !!!

    Rappelez-vous que Google est le plus grand aveugle d'Internet...
    Plus c'est accessible pour nous, plus c'est accessible pour lui,
    et meilleur sera votre score de référencement !

  7. #7
    Membre émérite

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2013
    Messages
    1 066
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2013
    Messages : 1 066
    Points : 2 569
    Points
    2 569
    Par défaut
    C'est bon j'ai été au bout du tuto.
    Je vais intégrer mon code de mon projet React Node
    Qui se sontente de faire un fetch sur un service Spring et de l'afficher dans un tableau
    Ca ca être un gros morceau pour moi

    Le problème était que la copie du projet react ne se faisait pas, car le chemin généré n'est pas reconnu.
    Je ne sais pas pourquoi, il me semble bon pourtant.
    J'ai du le mettre à la main en attendant

    L'erreur était dans le log, comme quoi sa sert de les lire
    Mais le message, me semble un peu anodin "skipin non existing ressource"

    PAr contre c'est un peu le boxon avec egit, qi à déplacer le projet ailleurs.
    Ex ite-t-il un moyen de pointer sur le repo ?

    J'en ai marre de egit, je véis revenir au terminal à la main
    Consultez mes articles sur l'accessibilité numérique :

    Comment rendre son application SWING accessible aux non voyants
    Créer des applications web accessibles à tous

    YES WE CAN BLANCHE !!!

    Rappelez-vous que Google est le plus grand aveugle d'Internet...
    Plus c'est accessible pour nous, plus c'est accessible pour lui,
    et meilleur sera votre score de référencement !

Discussions similaires

  1. Retour d'une image avec une action
    Par joatack dans le forum MVC
    Réponses: 13
    Dernier message: 30/06/2010, 08h52
  2. Réponses: 1
    Dernier message: 07/10/2009, 15h32
  3. Recupération retour d'une fonction avec AMFPHP
    Par john123 dans le forum Flex
    Réponses: 1
    Dernier message: 18/02/2009, 15h16
  4. Réponses: 4
    Dernier message: 29/09/2008, 15h48
  5. [9i] pb Temps de réponse avec FETCH ... INTO
    Par sygale dans le forum Oracle
    Réponses: 5
    Dernier message: 05/04/2006, 17h51

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo