2016-05-20 3 views
0

Ich versuche eine Get/Anfrage von Angular mit $resource auf eine bestimmte Route zu tun, die eine API pingen wird und dann sollte ich ein Objekt mit den Ergebnissen von der API erhalten.Wie wird eine Anfrage an eine Route gesendet und Informationen von einer API abgerufen?

Dies ist eine Suchfunktion. Siehe den Ablauf dieser Ausgabe:

Angular Service:

angular.module('MyApp') 
    .factory('Search', function($resource) { 
    return $resource('/api/shows/:_search'); 
    }); 

Ctrl:

$scope.$watch('searchStr', function (tmpStr) 
{ 
    if (!tmpStr || tmpStr.length == 0) 
    return 0; 


    // if searchStr is still the same.. 
    // go ahead and retrieve the data 
    if (tmpStr === $scope.searchStr) { 
     Search.query({'search': $scope.searchStr}) 
     .$promise.then(function(data) { 
     $scope.responseData = data; 
     }) 
    } 
}); 

Ausblick:

<input type="text" data-ng-model="searchStr"> 

<textarea> {{responseData}} </textarea> 

NodeJS:

app.get('api/shows/:search', function(req, res, next) { 
    console.log(req, res); 
    request.get('http://thetvdb.com/api/GetSeries.php?seriesname=' + req.params.search, function (error, response, body) { 
    console.log(error, response, body); 
    }); 
}); 

da ist, was ich brauche, ich muss eine Anfrage an 'api/shows/:search' tun und etwas tun, um die Ergebnisse von http://thetvdb.com/api/GetSeries.php?seriesname=' + req.params.search zu bekommen, aber ich kämpfe immer noch, wie es getan werden sollte. Die search Param ist die Zeichenfolge von Angular kommen, um auf die thetvdb gehen und zurück, was ich brauche. Hier

ist ein Beispiel dafür, was es sein sollte Rückkehr in dem Fall, dass Sie die Zeichenfolge param mit dem Wort senden „alle“: http://www.thetvdb.com/api/GetSeries.php?seriesname=all&language=en

Irgendwelche Vorschläge?

+0

hat 'req.params.search' einen Wert enthalten? – chresse

+0

@chresse Ich weiß nicht warum, aber ich versuche eine console.log in Nodejs zu machen Ich sehe nichts im Terminal. – TheUnnamed

+0

@chresse Ich sende nur 'alles' Wort und alles, was ich im Terminal sehe, ist dies: GET/api/shows? Search = alle 200 109.559 ms - 2806780 – TheUnnamed

Antwort

1

zumindest Ihre NodeJS Route hat die Zeichenfolge in der Antwort zurück:

app.get('api/shows/:search', function(req, res, next) { 
    request.get('http://thetvdb.com/api/GetSeries.php?seriesname=' + req.params.search, function (error, response, body) { 
    console.log(error, response, body); 
    res.end(body); 
    }); 
}); 
Verwandte Themen