как я могу запросить multi baseurl в angular? - PullRequest
0 голосов
/ 28 апреля 2020

Вопрос Описание

I want request 2 url  like this :
1. http://192.168.1.140:10086
2. http://192.168.1.112:7777

, поэтому я использую перехватчик angular для установки одного baseurl здесь - это код

import {Injectable} from '@angular/core';
import { HttpRequest, HttpHandler, HttpEvent, HttpResponse, HttpErrorResponse, } from '@angular/common/http';
import {Observable, throwError} from 'rxjs';
import {catchError, finalize, map, tap} from 'rxjs/operators';
import {MessageService} from '../service/message.service';

@Injectable()
export class HttpInterceptor implements HttpInterceptor {
  private message: MessageService;

  constructor(message: MessageService) {
    this.message = message;
  }
  intercept(request: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {
    const baseUrl = 'http://192.168.1.140:10086/';
    request = request.clone(
      {url: baseUrl + request.url}
    );
    return next.handle(request)
      .pipe(
        map((event: HttpEvent<any>) => {
          if (event instanceof HttpResponse) {
            // console.log('event--->>>', event);
          }
          return event;
        }),
        catchError((error: HttpErrorResponse) => {
          switch (error.status) {
            case 0:
              this.message.createBasicMessage('connect error');
              break;
            case 400:
              this.message.createBasicMessage(error.error);
              break;
          }
          return throwError(error);
        })
      );
  }
}

, вы можете видеть, что я использую это в перехватчике, поэтому, когда я http. get ('api / test') я буду использовать http://192.168.1.140: 10086 / для запроса

import {Component, OnInit} from '@angular/core';
import {HttpClient} from '@angular/common/http';
import {interval, of} from 'rxjs';
import {map, mergeMap, take} from 'rxjs/operators';
import {StaffList} from '../interface/staffList';

@Component({
  selector: 'app-test',
  template: `
    <p>
      test works!
    </p>
  `,
  styles: []
})
export class TestComponent implements OnInit {
  pageData: StaffList;
  private http: HttpClient;

  constructor(http: HttpClient) {
    this.http = http;
  }
  ngOnInit(): void {
    this.http.get('api/staff')
      .pipe(
        map((x: StaffList) => x)
      )
      .subscribe(x => {
          this.pageData = x;
        }
      );
  }
}

, но я только запрашиваю 192.168.1.140:10086, если я хочу запрос http://192.168.1.112: 7777 как мне установить другого baseurl в перехватчике?

...