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

AngularJS Discussion :

Angular et REST


Sujet :

AngularJS

  1. #1
    Membre du Club
    Homme Profil pro
    Inscrit en
    Octobre 2011
    Messages
    78
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2011
    Messages : 78
    Points : 46
    Points
    46
    Par défaut Angular et REST
    Bonjour j'essaye de comprendre comment en javascript avec Angular et REST je peux me connecter à un web service qui récupère des données en base, et effectuer des opérations CRUD sur les données que me retourne mon ws.

    Dans un premier temps j'aimerai juste pouvoir me connecter à ce web service et récupérer les données pour celà, j'ai essayé plusieurs méthodes, mais je n'ai jamais réussi à retourner une valeur sur ma vue. Parmi ce que j'ai essayé voici pour le .js :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    function AdminCtrl($scope, $http) {
    $http({method: 'GET', url: 'http://localhost:8010/mon_ws'}).
                success(function(data, status, headers, config) {
                    $scope.assets= data;
                })
    }
    Puis un deuxième cas ou j'essaye de me connecter sans rest :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    var url = "http://localhost:8010/mon_ws";
     
        $http.jsonp(url) 
            .success(function(data) {
                $scope.assets = data;
     
            }).error(function(data) {
                $scope.assets = data || "Request failed";
            });
    Ma vue html est toujours la même dans les deux cas :

    Code html : 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
    <div ng-controller="AdminCtrl">
    <div class="span8">
            <table cellpadding="0" cellspacing="0" border="0" class="table table-striped table-bordered" id="assets">
                <h1 class="assets_title">Assets</h1>
                <thead>
                    <th>Value</th>
                    <th>Description</th>
                </thead>
                <tbody>
                    <tr ng-repeat="asset in assets | filter:query">
                        <td>
                            {{asset.Name}}
                        </td>
                        <td>
                            {{asset.Description}}
                        </td>
                    </tr>
                </tbody>
     
            </table>
        </div>
    </div>

    En sachant que Name et Description son les attributs de l'objet en base, récupéré par le web service appelé et que je souhaite exploiter.

    Merci pour votre aide.

  2. #2
    Invité
    Invité(e)
    Par défaut
    Salut,

    Déjà tu as des incohérences dans ton binding controller-view : dans ta vue, la variable sur laquelle tu fais le ng-repeat est "Assets". Or dans ton premier test tu défini $scope.apps, alors que apps n'est pas utilisé côté template, et dans le deuxième tu définis $scope.asset alors que asset est, dans ta vue, l'élément d'itération.

    Donc si l'objet data résultant de ta requête ajax contient les assets attendus dans ton template, sous forme de tableau, le plus logique serait d'avoir $scope.Assets = data dans ton contrôleur. Dans ce cas l'instruction ng-repeat="asset in Assets" dans ton template itère bien sur les données voulues.

  3. #3
    Membre du Club
    Homme Profil pro
    Inscrit en
    Octobre 2011
    Messages
    78
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2011
    Messages : 78
    Points : 46
    Points
    46
    Par défaut
    erreur de ma part j'ai juste pas repris le bon exemple. Merci de l'avoir signaler, histoire que ça soit plus cohérent à présent.

  4. #4
    Membre du Club
    Homme Profil pro
    Inscrit en
    Octobre 2011
    Messages
    78
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2011
    Messages : 78
    Points : 46
    Points
    46
    Par défaut
    Si quelqu'un à une idée je suis toujours preneur, je n'y arrive toujours pas.

    Quand je met un point d’arrêt ça ne passe jamais dans le .succes

    J'ai testé une autre façon de faire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    var url = "http://localhost:8010/mon_ws";
     
        $http.jsonp(url)
            .success(function(data) {
                $scope.assets = new Array(data);
     
                for(var index = 0; index < assets.length; index++){
                    Name: $scope.assets[index];
                }
     
            }).error(function(err) {
                console.log("get error : "+err);
            });
    Il y a une légère avancée, dans le sens ou le tableau se déploie partiellement des lignes se rajoutent dans le tableau mais il reste vide.

  5. #5
    Invité
    Invité(e)
    Par défaut
    Tu as suivi ta requêtes AJAX dans un debugger (firebug/chrome...) ? Est-ce qu'une réponse correctement formatée avec les données voulues t'es bien retournée ?

  6. #6
    Membre du Club
    Homme Profil pro
    Inscrit en
    Octobre 2011
    Messages
    78
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2011
    Messages : 78
    Points : 46
    Points
    46
    Par défaut
    J'ai bien une réponse qui m'intéresse qui est retournée dans le suivi de type :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    {"Children":[],"Counters":[],"Description":"blabla","Id":"aet5ger8a8eg","Name":"tructruc","ParentId":"zapia-euu8984","Status":null,"Location":null}
    Plus exactement c'est le "Name" que j'essaye de récupérer dans un premier temps.

    J'ai récupérer l'erreur dans la console :

    get error : undefined

    SyntaxError: invalid label

    {"Children":[],"Counters":[],"Description":"blabla"......}
    Sur la colonne 1 ligne 1 soit au niveau du premier {

  7. #7
    Membre régulier
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2013
    Messages
    36
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2013
    Messages : 36
    Points : 71
    Points
    71
    Par défaut
    bonjour je ne sais pas pourquoi tu utilises JSONP?

    pour le format des appel $http, respecte bien la syntaxe

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    $http.get(url, {la config})
    .success(function (data, status, headers, config){
    //TODO
     }).error(function (data, status, headers, config) {
    //TODO
    }
    un coup tu mets pas de error(), un coup tu met JSONP avec error().
    Pour les tests j'utile l'extension Advanced REST Client sous Chrome pour comparer avec le code. Ca te permet deja de savoir l'aspect de ta réponse.
    En fait j'ai l'impression que tu ne recupere pas un tableau depuis le service. Alors tu fait

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $scope.assets = new Array(data);
    alors que ca devrait etre directement un tableau. Recherche de ce coté.

    *Pour préciser si tu appeller un objet dans {{objet.attribut}} et que l'attribut n'existe pas, Angularjs va afficher un vide plutot qu'une erreur.

  8. #8
    Membre du Club
    Homme Profil pro
    Inscrit en
    Octobre 2011
    Messages
    78
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2011
    Messages : 78
    Points : 46
    Points
    46
    Par défaut
    Merci pour vos réponse j'ai enfin réussi à résoudre mon probleme. Mais j'ai du obligatoirement passer par du json, j'avais cette contraire que je ne savais pas à la base bref... Merci encore.

  9. #9
    Membre du Club
    Inscrit en
    Octobre 2006
    Messages
    62
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 62
    Points : 43
    Points
    43
    Par défaut
    Slt

    Existe t'il une facon de cacher la url du service REST car le fait qu'elle soit en clair est un probleme de securite non? Les gens peuvent essaye de pirater le Service ou de le reutiliser dans leur site Web ...

    Merci

  10. #10
    Expert éminent sénior
    Avatar de Marco46
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2005
    Messages
    4 413
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2005
    Messages : 4 413
    Points : 19 609
    Points
    19 609
    Par défaut
    Citation Envoyé par zentro Voir le message
    Slt

    Existe t'il une facon de cacher la url du service REST car le fait qu'elle soit en clair est un probleme de securite non? Les gens peuvent essaye de pirater le Service ou de le reutiliser dans leur site Web ...

    Merci
    Aucun problème de sécurité ne peut être résolu par le fait de cacher une information présente.

    C'est au service web côté de serveur de gérer la sécurité. La pratique courante c'est d'avoir un cookie signé par le serveur contenant l'id de l'utilisateur après le login. Un autre moyen c'est via SSO.
    Un problème avec Git ? Essayez la FAQ, sinon posez votre question sur le forum.



    "Toute personne croyant qu'une croissance exponentielle peut durer indéfiniment dans un monde fini est soit un fou, soit un économiste."
    Kenneth E. Boulding

    "Les richesses naturelles sont inépuisables, car, sans cela, nous ne les obtiendrions pas gratuitement. Ne pouvant être ni multipliées ni épuisées, elles ne sont pas l’objet des sciences économiques."
    Jean-Baptiste Say, Traité d'économie politique, 1803.

    "/home/earth is 102% full ... please delete anyone you can."
    Inconnu

  11. #11
    Membre du Club
    Inscrit en
    Octobre 2006
    Messages
    62
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 62
    Points : 43
    Points
    43
    Par défaut
    Citation Envoyé par Marco46 Voir le message
    Aucun problème de sécurité ne peut être résolu par le fait de cacher une information présente.

    C'est au service web côté de serveur de gérer la sécurité. La pratique courante c'est d'avoir un cookie signé par le serveur contenant l'id de l'utilisateur après le login. Un autre moyen c'est via SSO.
    Mercio de votre reponse.

    Que me conseillez vous un cookie ou une token?
    Et au sujet de proteger le Service Web pour pas qu'on puisse le reutiliser depuis d'autres sites que me conseillez vous?

    Merci d'avance

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [j3d] HeavyComponent affiche au dessus du reste
    Par FarookFreeman dans le forum 3D
    Réponses: 3
    Dernier message: 10/07/2004, 22h44
  2. Réponses: 7
    Dernier message: 20/04/2004, 15h55
  3. automationn excel, Champ nombre reste en text ???
    Par mat_lefebvre dans le forum Access
    Réponses: 16
    Dernier message: 09/12/2003, 11h37
  4. Ecrire dans un fichier sans supprimer le reste
    Par koan_sabian dans le forum Linux
    Réponses: 4
    Dernier message: 20/02/2003, 15h44
  5. TBitBtn reste enfoncé
    Par TRINCAL Sylvain dans le forum C++Builder
    Réponses: 8
    Dernier message: 25/06/2002, 16h31

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