@LiguidCool

Как выполнить авторизацию через Axios до «основного» запроса?

Пишу небольшую приблуду для управления Zabbix'ом через WebAPI.
Вывел код в отдельный модуль:
const axios = require("axios");
const zabbix_api = "http://localhost/zabbix/api_jsonrpc.php";

exports.zapi = {
    token: "",
    id: 1,
    auth: function() {
        axios
            .post(zabbix_api, {
                jsonrpc: "2.0",
                method: "user.login",
                id: this.id,
                auth: null,
                params: {
                    user: "Admin",
                    password: "zabbix"
                }
            })
            .then(function(response) {
                this.token = response.data.result;
                this.id++;
                console.log(response.data);
            })
            .catch(function(error) {
                console.log(error);
            })
    },
    hosts: function() {
        if (!this.token) {
            this.auth()
        }
        axios
            .post(zabbix_api, {
                jsonrpc: "2.0",
                method: "hostgroup.get",
                params: {
                    output: "extend",
                    filter: {
                        name: ["Zabbix servers", "Linux servers"]
                    }
                },
                id: this.id,
                auth: this.token
            })
            .then(function(response) {
                this.id++;
                console.log(response.data);
            })
            .catch(function(error) {
                console.log(error);
            });
    }
};

И да, я понимаю что проблема в асинхронности - hosts и auth начинают выполнятся параллельно и естественно hosts получается unauthorized ...
Мне интересно как это нужно оформить "по феншую", что б кровь из глаз не текла ...
  • Вопрос задан
  • 1816 просмотров
Пригласить эксперта
Ответы на вопрос 2
Sanasol
@Sanasol Куратор тега JavaScript
нельзя просто так взять и загуглить ошибку
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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