代码之家  ›  专栏  ›  技术社区  ›  Bohao LI

为什么角度更改我的get请求url

  •  1
  • Bohao LI  · 技术社区  · 6 年前

    当我在angular中使用httpclient服务时,我发现httpclient更改了我的get请求url。

    import { HttpClient, HttpHeaders, HttpParams } from '@angular/common/http';
    import { Injectable } from '@angular/core';
    import { Observable } from "rxjs/Observable";
    
    const objeniousApiKey = '...';
    const objeniousRootUri = 'https://api.objenious.com/v1';
    
    @Injectable()
    export class ObjeniousRestProvider {
    
      constructor(public http: HttpClient) {
      }
    
      get(route: string, params?: HttpParams, headers ?: HttpHeaders): Observable<any> {
        if (!headers) {
          headers = new HttpHeaders();
        }
    
        headers = headers.set('apiKey', objeniousApiKey);
    
        return this.http.get(objeniousRootUri + route, {headers, params});
      }
    
    
      getSystemStatesList(commaSeparatedSystemIds: string): Observable<any> {
    // This does not work  (first method)
        return this.http.get(`/devices/states?id=3940649673951919,3940649673951920`);
    
    
    // This works  (second method)
        // let headers = new HttpHeaders().set('apiKey', objeniousApiKey);
        // return this.http.get('https://api.objenious.com/v1/devices/states?id=3940649673951919,3940649673951920', {headers});
      }
    }
    



    当我使用第一个方法时,rest api调用不起作用,我试图在chrome(使用开发工具)中找到这不起作用的原因。我发现Angular将我的get请求url更改为 "http://localhost:8100/devices/states?id=3940649673951919,3940649673951920" ,但不应该是 "https://api.objenious.com/v1/devices/states?id=3940649673951919,3940649673951920" 是吗?



    当我尝试第二种方法时,一切都很好。

    1 回复  |  直到 6 年前
        1
  •  1
  •   Amit Chigadani    6 年前

    您的代码如何知道将后端url前缀设置为路由路径。您错过了连接后端URL。默认情况下,angular将应用程序url视为宿主,并将剩余路径附加到宿主。这就是为什么你 http://localhost:8100/... 而不是 api 网址

    const objeniousRootUri = 'https://api.objenious.com/v1';
    
    getSystemStatesList(commaSeparatedSystemIds: string): Observable<any> {
        return this.http.get(this.objeniousRootUri +'/devices/states?id=3940649673951919,3940649673951920');
    }