Реакция - GET и POST запросы с аксиосами - PullRequest
0 голосов
/ 25 октября 2019

В моем приложении мне нужно GET некоторые данные (для которых я предоставляю собственный аутентификационный токен).

Однако в том же случае мне также необходимо POST второй токен для использованияпо нескольким конечным точкам, для внешних вызовов API.

Как мне POST этот второй токен, используя мой рабочий код ниже, используя axios?

Должен ли я расширить носитель авторизации или просто POST Spotify Token как строковые данные? Как так?

Мой код:

  getData(event) {
    const {token} = this.props.spotifyToken

    const options = {
      url: `${process.env.REACT_APP_WEB_SERVICE_URL}/endpoint`,
      method: 'get',
      headers: {
        'Content-Type': 'application/json',
        Authorization: `Bearer ${window.localStorage.authToken}`
      }
    };

    return axios(options)
    .then((res) => {
      console.log(res.data.data)
   })    
    .catch((error) => { console.log(error); });
  };

Ответы [ 2 ]

0 голосов
/ 26 октября 2019

В этом конкретном случае, когда токен необходим для извлечения данных на сервере, я обнаружил, что передача токена по URL-адресу более подходит, например:

@endpoint.route('/endpoint/<select>/<user_id>/<token>', methods=['GET'])
def endpoint(name, user_id, token):
# business logic

и:

const options = {
  url: `${process.env.REACT_APP_WEB_SERVICE_URL}/endpoint/${select}/${userId}/${this.props.spotifyToken}`,
  method: 'get',
  headers: {
    'Content-Type': 'application/json',
    Authorization: `Bearer ${window.localStorage.authToken}`
  }
};

в противном случае внутренний код запускался бы дважды для POST и GET, что в моем случае нежелательно.

0 голосов
/ 25 октября 2019

Поскольку асинхронное ожидание, примененное к вашему коду, будет выглядеть примерно так:

async getData(event) {
  const {token} = this.props.spotifyToken

  let getRes = await axios.get(`${process.env.URL}/endpoint` {
    headers: {
      'Content-Type': 'application/json',
      'Authorization': `Bearer ${window.localStorage.authToken}`
    }
  }

  let postRes = await axios.post(`${process.env.URL}/endpoint` {
    headers: {
      'Content-Type': 'application/json',
      'Authorization': `Bearer ${window.localStorage.authToken}`
    }
  }

  console.log(getRes.data.data);
  console.log(postRes.data.data);
};

...