Дополнительный символ добавляется в URL-адрес API в angular - PullRequest
0 голосов
/ 03 августа 2020

Файл среды

export const environment = {
    production: false,
    name: 'local',
    apiUrl: 'https://dev.xyz.com/v1',
};

Служба API

login(input: ILogin): Observable<any> {
    Common.showConsoleLog('demoAPIReq', input);
    const url1 = 'https://dev.xyz.com/v1/auth/login'
    const url = `${environment.apiUrl}${consts.LOGIN}`;
    return this.http.post(url, input, { 
        headers: Common.authHeader(), observe: 'response'
    }).pipe(tap (data => Common.showConsoleLog('demoAPIRes', data)),
    catchError(this.handleError('login'))
);

Общий файл

static authHeader(): any {
    const httpBearerOptions = {
        headers: new HttpHeaders({
            'Content-Type': 'application/json',
        }),
    };
    return httpBearerOptions.headers;
}

Файл констант

export const consts = {
    ROUTE_HOME: 'home',
    ROUTE_LOGIN: 'login',
    ROUTE_REGISTER: 'register',
    ROUTE_DASHBOARD: 'dashboard',
    LOGIN: '​/auth/login',
};

Если я прохожу url1 в post api, тогда он работает нормально, Также const url3 = environment.apiUrl + '/auth/login'; также работает, но я объединяю строку, как в const url = `${environment.apiUrl}${consts.LOGIN}`;, затем добавляю какой-то странный дополнительный символ в url, когда я проверял вкладку сети, как показано ниже введите описание изображения здесь

1 Ответ

0 голосов
/ 03 августа 2020

Непонятно, что такое consts.LOGIN, но похоже на проблемную область c. «Дополнительные символы», которые вы видите в URL-адресе, являются версией consts.LOGIN в кодировке URL-адреса, поэтому вам может потребоваться исправить это значение или заставить его кодировать / декодировать, где это необходимо.

const someVal = "some value with spaces";
const encoded = encodeURIComponent(someVal);
const decoded = decodeURIComponent(encoded);
console.log('encoded', encoded);
console.log('decoded', decoded);

Я также считаю, что вы хотите добавить / в URL-адрес, который вы пытаетесь создать:

const url = `${environment.apiUrl}${consts.LOGIN}`;

, вероятно, должно быть:

const url = `${environment.apiUrl}/${consts.LOGIN}`;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...