Получите ошибку 401 с паспортом PUT и PUT Laravel / Vue / Axios - PullRequest
0 голосов
/ 07 июня 2018

Я работаю над приложением Vue с отдельным внутренним API Laravel.Внутренняя часть имеет паспорт Laravel, который требует токен доступа при выполнении вызовов базы данных.

Обычно все идет хорошо, я могу получить данные из базы данных, но по некоторым причинам, 2 из моих вызовов получают ошибки, POST en PUT.Я не знаю, почему я получаю неаутентифицированное (401) из паспорта Laravel обратно, в то время как мой запрос get идет хорошо.Кроме того, POST и PUT работают нормально в приложении почтальона.

Запрос get

   getSuppliers() {
        axios.get(`${this.$API_URL}/api/v1/relations`, {
            headers: this.headers,
        })
            .then((response) => {
                this.loaded = true;
                this.relations = response.data.data;
            })
            .catch(error => console.log(error));
    },

Запрос post

    axios.post(`${this.$API_URL}/api/v1/relations`, {
        headers: this.headers,
        data: {
            company_name: this.supplier.company_name,
                    language_id: this.supplier.language_id,
                    supplier_type_id: this.supplier.supplier_type_id,
                    email: this.supplier.email,
                    website: this.supplier.website,
                    recognition_number: this.supplier.recognition_number,
                    street: this.supplier.street,
                    house_number: this.supplier.house_number,
                    zipcode: this.supplier.zipcode,
                    city: this.supplier.city,
                    country: this.supplier.country,
                },
            })
                .then((response) => {
                    console.log(response);
                    // retrieve the id
                    // push the user to the show of the retrieved id
                })
                .catch(error => console.log(error));

Вспомогательные функции для маркера доступа

function getHeaders(token) {
    return {
        Accept: 'application/json',
        Authorization: `Bearer ${token}`,
    };
}

function getToken() {
    const oauth = JSON.parse(localStorage.getItem('oauth') || '{}');
    if (oauth.access_token) {
        return oauth.access_token;
    }
    return false;
}

Кто-нибудь вышелтам что была такая же проблема или подобная?

1 Ответ

0 голосов
/ 08 июня 2018

После некоторого копания, просматривая мой другой код и запросы, я нахожу решение, которое исправило его для меня.

Вместо

axios.post(`${this.$API_URL}/api/v1/relations`, {
    headers: this.headers,
    data: {
        company_name: this.supplier.company_name,
                language_id: this.supplier.language_id,
                supplier_type_id: this.supplier.supplier_type_id,
                email: this.supplier.email,
                website: this.supplier.website,
                recognition_number: this.supplier.recognition_number,
                street: this.supplier.street,
                house_number: this.supplier.house_number,
                zipcode: this.supplier.zipcode,
                city: this.supplier.city,
                country: this.supplier.country,
            },
        })
            .then((response) => {
                console.log(response);
                // retrieve the id
                // push the user to the show of the retrieved id
            })
            .catch(error => console.log(error));

Мне пришлось сделать

axios({
    method: 'post',
    url: `${this.$API_URL}/api/v1/relations`
    headers: this.headers,
    data: {
        company_name: this.supplier.company_name,
                language_id: this.supplier.language_id,
                supplier_type_id: this.supplier.supplier_type_id,
                email: this.supplier.email,
                website: this.supplier.website,
                recognition_number: this.supplier.recognition_number,
                street: this.supplier.street,
                house_number: this.supplier.house_number,
                zipcode: this.supplier.zipcode,
                city: this.supplier.city,
                country: this.supplier.country,
            },
        })
            .then((response) => {
                console.log(response);
                // retrieve the id
                // push the user to the show of the retrieved id
            })
            .catch(error => console.log(error));

Я не вижу никакой разницы, кроме стиля, поэтому я не знаю точно, почему работает второй стиль, а первый - нет, особенно для запросов типа put и post.

...