req-body未定义的axios.get

时间:2019-04-26 00:58:17

标签: react-native axios

我有我的react-native代码中的axios.get这个api.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 个答案:

答案 0 :(得分:1)

GET请求没有与之关联的正文。如果要将类似args的主体放入get请求中,则需要使用查询参数在URL中对它们进行编码。

但是,您不想使用auth令牌来做到这一点。取而代之的是,您要将令牌放在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]; 
});

当然,我建议确保在尝试拆分头之前先确保该头存在。...在执行端点处理程序之类的操作之前,可能要使用中间件,但这应该可以帮助您。