@Mr_Pride7
Ничего не умею, но хочу научиться

Как правильно написать компонент, который будет отправлять кросс-доменный запрос и сохранять токен в стейте?

Решаю тестовое заданиеa, не могу найти ошибку, то ли компонент не так написал, то ли запрос кривой. Выполнить задание к сроку вряд ли получится, но очень хочется разобраться в вопросе.
Сперва нужно получить токен, но с эти возникли проблемы.
Вот, описание запроса, прилагаемое к заданию:
curl -X POST "<host>/oauth/token" 
     -H "Authorization: Basic NDk0NTU5Mjg5OTM0MzYwOlFNMUpaQ0pUMFNLMUw3NQ==" 
     -d "grant_type=password" 
     -d "username=admin@local.com" 
     -d "password=admin" 
     -d "scope=trust"
     -d "session_key=somesessionkey"

Собсно, мой код:
import * as React from 'react';

const BASE_PATH = 'url'; // здесь адрес api компании, не знаю, могу ли я его публично показывать
const data = 'grant_type=password&username=admin@local.com&password=admin&scope=trust&session_key=123';

class GetApi extends React.Component {

    state = {
        result: {}
    };

    componentDidMount(): void {
        fetch(`${BASE_PATH}/oauth/token`,
            {
                method: 'POST',
                mode: 'cors',
                credentials: "include",
                headers: {
                    "Authorization": 'Basic NDk0NTU5Mjg5OTM0MzYwOlFNMUpaQ0pUMFNLMUw3NQ==',
                    "Content-type": 'application/x-www-form-urlencoded'
                },
                body: data
            })
            .then(res => res.json())
            .then(result => this.setRes(result))
            .catch(eror => eror);
    }

    setRes = result => {
        this.setState({ result });
    };

    render () {
        const { result } = this.state;
        console.log(result);
        return (
            <h1>{ result }</h1>
        );
    }

}

export default GetApi;
  • Вопрос задан
  • 116 просмотров
Пригласить эксперта
Ответы на вопрос 2
@Sunflowerz
Очень рекомендую сначала поставить себе postman.
Затем запомнить этe программу на всю жизнь.
После чего вписать все входные данные в postman, найти ошибку в headers. После чего записать в state токен.
Ответ написан
hzzzzl
@hzzzzl
.then(res => res.json())
  .then(result => { console.log(result); this.setRes(result) })
  .catch(eror => eror);


это отрабатывает без ошибки? в ответ точно приходит json, а не текст, например?

this.setState({ result });
..
const { result } = this.state;  
console.log(result);   // здесь что-то есть?

console.log(this.state) // ключ в стейте называется result?
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы