2016-05-03 4 views
0

На стороне узла/выражения я пытаюсь сделать запрос на получение только что созданной конечной точки.Запрос на собственную конечную точку API

Каков правильный способ сделать это? Могу ли я использовать библиотеку выборки (изоморфный-выборку)

Мою попытку:

router.get('/displayweather', function(req, res) { 

    fetch('/weather') 
    .then(function(response){ 
     res.send(response); 
    }); 
}); 

router.get('/weather', function(req, res){ 
    var fetchUrl = 'http://api.wunderground.com/api/xyz-token/conditions/q/CA/San_Francisco.json'; 
    fetch(fetchUrl) 
    .then(function(response){ 
     if (response.status >= 400) { 
     throw new Error("Bad request response from server"); 
     } 
     return response.text(); 

    }).then(function(body) { 
     res.send(body); 

    }); 

}); 

Где есть другой метод router.get (..) получение данных о погоде с помощью внешнего API

+2

Попробуйте и посмотрите, не работает ли он. – Andy

+0

Моя попытка заставляет страницу висеть – darkace

+1

Что такое '/ weather'? Это другой сайт с API, или это ваш собственный сервер? Кажется, вы смешиваете код сервера/клиента. – Andy

ответ

1

I» d забыть о том, что первая часть и сосредоточиться на этом коде вы добавили:

сервера

router.get('/weather', function(req, res){ 
    var fetchUrl = 'http://api.wunderground.com/api/xyz-token/conditions/q/CA/San_Francisco.json'; 
    fetch(fetchUrl) 
    .then(function(response){ 
     if (response.status >= 400) { 
     throw new Error("Bad request response from server"); 
     } 

     // return json 
     return response.json(); 
    }).then(function(body) { 

     // but stringify it when you send it 
     res.send(JSON.stringify(body)); 
    }); 
}); 

Клиент

+0

Хорошо, что имеет смысл, так что не возможно сделать эквивалент на бэкэнде? Или это просто плохая практика, и я должен использовать модули для репликации функций вместо этого? А также я не могу получить пример, который вы дали на работу из-за моего непонимания о том, как бороться с объектами ответа. – darkace