req.body undefined axios.get в реагировать на родной - PullRequest
0 голосов
/ 26 апреля 2019

У меня есть этот api.get, который является axios.get в моем собственном коде реакции, передавая auth_token как параметр

const auth_token = await AsyncStorage.getItem('access_token');
api.get('/info/getallposts', {
      auth_token
})

auth_token не равен нулю

на моем сервере у меня есть этот декодер

let user_id = jwt.decode(req.body.auth_token).id;

req.body.auth_token не определено

Работает на POSTMAN :(

1 Ответ

1 голос
/ 26 апреля 2019

У запросов GET нет тела, связанного с ними.Если вы хотите, чтобы аргументы типа тела были похожи на запрос get, вам необходимо закодировать их в URL с помощью параметров запроса.

Однако вы не хотите делать это с токенами аутентификации.Вместо этого вы захотите поместить токен в заголовок http.Для токенов JWT вы, вероятно, захотите использовать значение заголовка Bearer Token.

попробуйте это:

const api = require('axios');

// make sure that this code is wrapped in an async function
const auth_token = await AsyncStorage.getItem('access_token');
const posts = await api.get('/info/getallposts', {
   headers: {
     Authorization: `Bearer ${auth_token}`
   }
})

Теперь в вашем бэкэнд-коде вам нужно будет найти ключ «Авторизация» в поле заголовков объекта запроса.Предполагая, что вы используете экспресс, ваш маршрут будет выглядеть примерно так:

app.get('/info/getall/posts', (req, res) => {
  const authHeader = req.get('Authorization');
  const jwt = authHeader.split(' ')[0]; 
});

Конечно, я бы порекомендовал сначала убедиться, что заголовок существует, прежде чем пытаться его разбить ... возможно, используйте промежуточное ПО доон даже выполняет обработчик конечной точки или что-то в этом роде, но это должно помочь вам.

...