Передача токена другому запросу в Node.js - PullRequest
0 голосов
/ 24 сентября 2018

В первом запросе я прошу внешний сервер предоставить токен.И я получаю это.Тогда я хотел бы использовать его в другом запросе.Все сделано в express.js.Как лучше всего передать его другому запросу?

Это выглядит так:

const express = require('express');
const axios = require('axios');
const config = require('./config');

const app = express();

axios.post('URL1', {
  email: config.email,
  password: config.password,
})
  .then(function(response) {
    console.log(response.data.token); //here I' getting the token
  })
  .catch(function(error) {
    console.log(error);
  });


const headers = { headers: { 'Authorization': 'Token ' + token } }; //here I would like to use (for the use of a second request)

axios.get('URL2', headers)
  .then(function(response) {
    console.log(response);
  })
  .catch(function(error) {
    console.log(error);
  });

const PORT = process.env.PORT || 5000;
app.listen(PORT);

Конечно, я не могу просто присвоить его переменной.Спасибо за помощь!

1 Ответ

0 голосов
/ 24 сентября 2018

Вы можете вызвать его в другой функции, как показано ниже.

const express = require('express');
const axios = require('axios');
const config = require('./config');

const app = express();

  axios.post('URL1', {
    email: config.email,
    password: config.password,
  }).then((response) => {
    // calling function here
    return handleToken(response.data.token);
    console.log(response.data.token); //here I' getting the token
  }).catch((error) => {
    console.log(error);
  });

//second request will be handled here
const handleToken = (token) => {
  const headers = { headers: { 'Authorization': 'Token ' + token } }; 
//here I would like to use (for the use of a second request)

  axios.get('URL2', headers)
   .then((response) => {
    console.log(response);
   }).catch((error) => {
     console.log(error);
   });
}

const PORT = process.env.PORT || 5000;
app.listen(PORT);

Желательно, если вы пишете отдельную функцию, чтобы избежать ада обратного вызова.

РЕДАКТИРОВАТЬ - МАРШРУТ С ASYNC / AWAIT

app.get('/', async (req, res)=>{
    try {
        let result = await axios.post('URL1', { email: config.email, password: config.password });
        let final = await handleToken(response.data.token);
        // other operations here
        console.log(result);
    } catch (err) {
        //handle error here
        console.error(err);
    }       
})      

//second request will be handled here
const handleToken = async (token) => {
    try {
        const headers = { headers: { 'Authorization': 'Token ' + token } };
        let response = await axios.get('URL2', headers);
        return response;
    } catch (err) {
        throw err;
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...