Как правильно обрабатывать параметры и запросы в Axios? - PullRequest
0 голосов
/ 23 октября 2018

Я использую API с NODEJS и использую axios для выполнения "get" ...

In NODEJS мы называем "params" все, что приходит до "?" Символ, и мы называем "запрос" всем, что идет после the "?" Символ, , такой как:

https://www.url.com/testing.xsjs?QueryName1='test1,test1'&QueryName2=1

Проблема Я имею в Axiosявляется то, что неправильно создает URL-адрес , правильный URL-адрес которого должен быть:

https: //www.url.comho/fatSales.xsjs?Shop='shop1,shop2,shop3'&PeriodoDe=201801&PeriodoAte=201807&Kpi='kp1,kp2,kp3'& Select = NUCOMPETEC

Но URL-адрес, который он создает для меня, таков:

https://www.apiUrl.com/Shop=shop1, + shop2, + shop3&PeriodoDe=201801&PeriodoAte=201807&Kpi=kp1,+kp2,+kp3&Select=NUCOMPETEC

У меня есть некоторые проблемы с этим URL, который он создает, которые следующие:

1) Магазин и Kpi создает "+ "символ 2) Он не добавляет параметр (NODEJS) перед"? "Символ ...

Помните, что: Shop и Kpi (это массив с 1 или * элементами)

const axios = require('axios');
const Qs    = require('qs');

class ApiDAO {
    constructor(xsjs, shoppingId, periodOf, periodUntil, kpi, select){
        this.xsjs        = xsjs;
        this.shoppingId  = shoppingId;
        this.periodOf    = periodOf;
        this.periodUntil = periodUntil;
        this.kpi         = kpi;
        this.select      = select;
    }

    configAxios(){
        return axios.create({
            method:              'GET',
            responseType:        'json',
            responseEncoding:    'utf8',
            headers: {
                'Content-Type':  "application/json",
                'Cache-Control': "no-cache",
                Authorization:   "",
                Apikey:          "", 
            },
            params: {
                xsjs:       this.xsjs,
                Shop:       this.shoppingId,
                PeriodoDe:  this.periodOf,
                PeriodoAte: this.periodUntil,
                Kpi:        this.kpi,
                Select:     this.select
            },
        });
    }

    async getResponseAxios(){
        return await this.configAxios().get('https://www.apiUrl.com/');
    }
}

module.exports = () => { return ApiDAO };

1 Ответ

0 голосов
/ 24 октября 2018

Стригируете ли вы свои параметры?Можете ли вы попробовать следующее:

const axios = require('axios');
const Qs    = require('qs');

class ApiDAO {
    constructor(xsjs, shoppingId, periodOf, periodUntil, kpi, select){
        this.xsjs        = xsjs;
        this.shoppingId  = shoppingId;
        this.periodOf    = periodOf;
        this.periodUntil = periodUntil;
        this.kpi         = kpi;
        this.select      = select;
    }

configAxios(url){
    return axios.get({
        method:              'GET',
        url:                 url,
        responseType:        'json',
        responseEncoding:    'utf8',
        headers: {
            'Content-Type':  "application/json",
            'Cache-Control': "no-cache",
            Authorization:   "",
            Apikey:          "", 
        },
        params: {
            xsjs:       this.xsjs,
            Shop:       this.shoppingId,
            PeriodoDe:  this.periodOf,
            PeriodoAte: this.periodUntil,
            Kpi:        this.kpi,
            Select:     this.select
        },
    });
}

async getResponseAxios(){
    return await this.configAxios('https://www.apiUrl.com/');
}
}

module.exports = () => { return ApiDAO };

Или, если вы хотите использовать axios create, передайте URL-адрес ранее как поле параметра.Я не думаю, что это ошибка с другими параметрами.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...