Angular Js 7 перезаписывает лазурный URL Web Api своим базовым URL - PullRequest
1 голос
/ 04 ноября 2019

У меня есть два отдельных веб-приложения, размещенных в веб-приложении Azure.

Один основан на угловом интерфейсе js 8, а другой - на внутреннем веб-API .net внутреннего интерфейса 2.2.

Я создал базовый метод для вызова значений из веб-API, который возвращает значение1,и значения 2, аналогично, есть какой-то другой метод API, который возвращает мне json.

Если я вызываю в браузере https://B.azurewebsites.net/api/values, который возвращает мне value1 и значение 2. успешно.

Теперь мойпереднее угловое веб-приложение пытается вызвать веб-API на локальном компьютере, работающем над http://localhost:4200, и вызывает веб-API, размещенный на Azure, как показано ниже

export class ApiDataService 
{
private REST_API_SERVER = "";  //mentioned in constant file under services


  constructor(private httpClient: HttpClient) {
     this.REST_API_SERVER = "https://B.azurewebsites.net/api";
  }


public getList() {
    return this.httpClient.get(this.REST_API_SERVER + 
     "/employee/getlist").pipe(catchError(this.handleError));
  }


На локальном компьютере оно работает нормально,

При развертывании углового веб-приложения В Azure выдается ошибка 404 с сообщением:

#

http: реакция на ошибку https://A.azurewebsites.net/B.azurewebsites.net/api/employee/getlist

#

Здесь A.azurewebsites.net -> угловое веб-приложение

B.azurewebsites.net -> .Net Core Web API 2.2

Я не могучтобы найти причину, по которой веб-сайты Azure, вызывающие два раза, должны просто позвонить https://B.azurewebsites.net/api/employee/getlist

Я также удалил "/" из index.html в угловом проекте, например

<base href=""/> --removed the "/"

Как выполнить сбросБазовый URL в employee.component.ts

Любые предложения или комментарии будут очень полезны.

1 Ответ

1 голос
/ 04 ноября 2019

Мне нужно создать класс, производный от HTTPClient, и установить базовый URL-адрес, как показано ниже:


@Injectable()
export class ApiHttpClient extends HttpClient {
  public baseUrl: string;

  public constructor(handler: HttpHandler,
    private constName: ConstNameService ) {
    super(handler);

    // Get base url from wherever you like, or provision ApiHttpClient in your AppComponent or some other high level
    // component and set the baseUrl there.
    this.baseUrl = constName.apilocalUrl.prod_api_url;//'/api/';
  }

  public getMethod(url: string, options?: Object): Observable<any> {
    url = this.baseUrl + url;
    return super.get(url, options);
  }
}


Теперь, используя этот класс в служебном модуле для получения списка данных

constructor(private constName: ConstNameService,
    private apiclient :ApiHttpClient ) {}


  public getEmpList() {
   this.apiclient.getMethod("/employee/getlist").pipe(catchError(this.handleError));
  }
...