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

NodeJS Discussion :

[+Angular] Erreur de récupération d'un JSON depuis une requête GET


Sujet :

NodeJS

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 9
    Points : 6
    Points
    6
    Par défaut [+Angular] Erreur de récupération d'un JSON depuis une requête GET
    Bonjour,

    Je développe une application full JS pour apprendre Node.js et Angular.
    D'un côté j'ai une appli Angular qui utilise Grunt (http://localhost:9000), de l'autre une API Node.js qui traite les données (http://localhost:8001).

    Je souhaite que l'appli récupère le contenu d'un fichier JSON en faisant un appel au serveur (méthode GET) :

    Soit avec le service $http :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $http.get("http://localhost:8001/blocks")
    Soit en utilisant $resource :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    .factory("Blocks", function ($resource) {
        return $resource("http://localhost:8001/blocks",{},);
    });
    puis :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $scope.blocksList = Blocks.query()

    Côté serveur, j'envoie les données lorsqu'on reçoit une requête GET :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    server.get('/blocks', function(req, res){
        res.sendfile('data/blocks.json');
    });

    Lorsque je teste la récupération des données, l'application reçoit bien une réponse avec une en-tête (statut 200), mais le corps de la requête est vide :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Host: localhost:8001
    User-Agent: Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:28.0) Gecko/20100101 Firefox/28.0
    Accept: application/json, text/plain, */*
    Accept-Language: fr,fr-fr;q=0.8,en-us;q=0.5,en;q=0.3
    Accept-Encoding: gzip, deflate
    Referer: http://127.0.0.1:9000/
    Origin: http://127.0.0.1:9000
    Connection: keep-alive
    Pourtant, lorsque je teste l'API via CURL, je reçoit bien les données :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    curl -i -H "Accept: application/json" -H "Content-Type: application/json" http://localhost:8001/blocks
    Réponse :
    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
    HTTP/1.1 200 OK
    X-Powered-By: Express
    Accept-Ranges: bytes
    ETag: "498-1396003136000"
    Date: Fri, 28 Mar 2014 12:05:59 GMT
    Cache-Control: public, max-age=0
    Last-Modified: Fri, 28 Mar 2014 10:38:56 GMT
    Content-Type: application/json
    Content-Length: 498
    Connection: keep-alive
     
    [
        {"id": 0, "title": "Default", "type": "default", "order": 1, "col": 0},
        {"id": 1, "title": "My music block 1", "type": "music", "order": 4, "col": 2},
        {"id": 2, "title": "My links block 1", "type": "links", "order": 3, "col": 1},
        {"id": 3, "title": "My default block 2", "type": "default", "order": 2, "col": 2},
        {"id": 4, "title": "My music block 2", "type": "music", "order": 0, "col": 0},
        {"id": 5, "title": "My links block 2", "type": "links", "order": 5, "col": 1}
    ]
    Est-ce que quelqu'un sait d'où peut venir le problème ?

    Merci,

    Romain

  2. #2
    Rédacteur/Modérateur
    Avatar de beekeep
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2006
    Messages
    2 005
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Octobre 2006
    Messages : 2 005
    Points : 3 325
    Points
    3 325
    Par défaut
    Bonjour,

    le code complet de l'utilisation de la ressource n'est pas indiqué. Quelle erreur est remontée ?

    Une fois la ressource définie il doit y avoir un query:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    var blocks = blockResource.query(function()
        {
          successHandler(blocks);
        }, function(error)
        {
          errorHandler(error);
        });

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

    Je parierais sur une erreur de cross domain policy.
    Le port de l'appli (grunt) qui délivre le contenu de la webapp et le port de l'appli (node) qui expose les services sont différents, donc le navigateur bloque, à part si tu lui as précisé de ne pas bloquer (--disable-web-security avec chrome, en dev).

    Une solution couramment employée pour résoudre le problème et de faire un proxy qui redirige vers l'une ou l'autre des applis.


    EDIT : J'avais mal lu les détails de la question, réponse à côté de la plaque à priori.

Discussions similaires

  1. Réponses: 6
    Dernier message: 16/08/2010, 11h12
  2. [MySQL] récupération variable depuis une requête pour en déclencher une autre
    Par Baldric de Dol dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 15/05/2008, 20h35
  3. [POO] Récupération liste clef valeur depuis une applet
    Par Phoxtrot dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 23/04/2008, 12h59
  4. Réponses: 2
    Dernier message: 04/09/2007, 13h53
  5. Réponses: 4
    Dernier message: 05/06/2007, 10h03

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