Как передавать токен аутентификации с каждым запросом React в серверный API?

#reactjs

#reactjs

Вопрос:

У меня есть существующее приложение, в котором REST API уже разработаны. Я подумываю о разработке интерфейса с использованием React JS, и интерфейс должен вызывать мои REST API с каждым запросом.

Однако, когда я вхожу в свое приложение, генерируется токен, который передается на все последующие запросы в качестве заголовка аутентификации. Как я могу добиться этого с помощью React? Я новичок в React.

Комментарии:

1. Как вы взаимодействуете с API из своего кода React?

Ответ №1:

Вы можете использовать axios как библиотеку и добавлять это в качестве конфигурации

 axios.defaults.headers.common['Authorization'] = `Bearer ${token}` 
  

https://www.npmjs.com/package/axios

Ответ №2:

Используйте выборку. Пример:

 var data = {myData: 'hello'}; // or just 'hello'

fetch(YOUR_URL, {
  method: 'POST', // or GET
  body: JSON.stringify(data), // data can be string or object
  headers:{
    'Authorization': YOUR_TOKEN,
    // ... add other header lines like: 'Content-Type': 'application/json'
  }
}).then(res => res.json()) // if response is json, for text use res.text()
.then(response => console.log('Response:', JSON.stringify(response))) // if text, no need for JSON.stringify
.catch(error => console.error('Error:', error));
  

Ответ №3:

Сначала получите токен и сохраните его в локальном хранилище вашего браузера, используя localStorage.setItem('token', JSON.stringify(userToken));

Затем каждый раз, когда вы отправляете запрос, вы получаете этот токен из своего локального хранилища с помощью localStorage.getItem("token")

После этого, если бы вы отправляли объект со значением ключа ID: 1, вы бы сделали:

 await fetch("your_API_endpoint", {
                            method: 'POST',
                            headers: { 'Content-Type': 'application/json', "Authorization": localStorage.getItem("token")  },
                            body: JSON.stringify({'ID': '1'})
                        })