如何将动态值附加到URL?

时间:2018-10-24 06:05:44

标签: angular

我有一个Util.ts,它将具有所有API端点。

在我的组件中,将导入Api类并使用API​​。

现在,API端点之一具有动态值,需要将其附加到URL。

Utils.ts

export class Api {
    public static PROGRESS_ISSUE = 'https://xxx/rest/api/2/search?jql=project%20%3D%2025764%20AND%20status%20%3D%20%22In%20Progress%22&fields=id,key,status,project&maxResults=100'
}

在上面,我想将projectstatus设为要在服务中传递的动态值。

Service.ts

import { Api } from './api/utils'; 

  getJiraOpenIssues(id: number, status:string) {
    return this.http.get<any>( Api.PROGRESS_ISSUE )
    .subscribe(count => console.log(count.total));
  }

2 个答案:

答案 0 :(得分:1)

您可以在PROGRESS_ISSUE上放置一些占位符字符串,然后使用replace将其替换为实际值:

export class Api {
  public static PROGRESS_ISSUE = "https://xxx/rest/api/2/search?jql=project=PROJECTPLACEHOLDER&status=STATUSPLACEHOLDER&fields=id,key,status,project&maxResults=100"
}

然后,在您的getJiraOpenIssues方法中,使用replace:

import { Api } from './api/utils';

getJiraOpenIssues(id: number, status: string) {
  const apiUrl = Api.PROGRESS_ISSUE
    .replace('PROJECTPLACEHOLDER', 'YOUR PROJECT ID HERE')
    .replace('STATUSPLACEHOLDER', 'YOUR PROJECT STATUS HERE');
  return this.http.get<any>(apiUrl)
    .subscribe(count => console.log(count.total));
}

答案 1 :(得分:0)

您可以简单地附加类似我们用+运算符连接字符串的值。

   getJiraOpenIssues(id: number, status:string) {
        return this.http.get(Api.PROGRESS_ISSUE + '' + id + '/'+status)
            .map((response) => response.json());
    }