繁体   English   中英

如何发送GET请求到HTTP客户端以基于参数检索数据?

[英]How to send GET request to HTTP Client to retrieve data based on a parameter?

在我的Angular应用程序中,我能够向JSON服务器发送HTTP GET请求并从JSON文件中检索数据。

这是我JobService中目前的一些代码:

getJob(id: number): Observable<IJob> {
    return this.httpClient.get<IJob>(`${this.baseUrl}/${id}`)
        .pipe(catchError(this.handleError));
}

getJobs(): Observable<IJob[]> {
    return this.httpClient.get<IJob[]>(this.baseUrl)
        .pipe(catchError(this.handleError));
}

这是IJob界面:

export interface IJob {
    id: number;
    title: string;
    description: string;
    employeeId?: number;
    managerId: string;
}

这是调用上述方法的component代码:

loadExistingJobs() {
    this._jobService.getJobs().subscribe(
        (listJobs) => {
            this.jobs = listJobs;
        },
        (err) => console.log(err)
    );
}

getJob(id: number) {
    this._jobService.getJob(id).subscribe(
        (job: IJob) => {
            this.editJob(job);
            this.job = job;
        },
        (err) => console.log(err)
    );
}

使用上面的代码,我能够检索所有现有的作业和基于jobId的特定作业。

现在,我需要弄清楚如何基于managerId检索所有作业。 即我只想显示ManagerId = 1的作业。

有人可以告诉我要做什么吗?

我是否需要发送带有ManagerId参数的其他GET请求,还是要过滤从getJobs返回的数据?

如果您需要实现单独的API以基于managerId获取作业,则还必须更改后端API。 但是可以简单地实现如下。 根据managerId过滤从getJobs API调用获得的数据。

filteredJobs: any;
managerId: string = "1";

    loadExistingJobs() {
        this._jobService.getJobs().subscribe(
            (listJobs) => {
                this.jobs = listJobs;
                this.filteredJobs = this.jobs.filter(job => job.managerId === this.managerId);
            },
            (err) => console.log(err)
        );
    }

此问题取决于您的REST API和您的设计

如果可以添加新的REST API,建议添加一个新的REST服务,该服务基于“ ManagerID”返回“作业”(优化的解决方案)

如果没有,您可以通过以下方式过滤返回的列表:

loadExistingJobsByManagerId(managerId: string) {
    this._jobService.getJobs().subscribe(
        (listJobs) => {
            this.jobs = listJobs;
            this.filtered = listJobs.filter(job => job.managerId === managerId);
        },
        (err) => console.log(err)
    );
}

我认为这与您正在使用并存在的API有关。 在这里您可以执行以下任一操作:

  1. 调用另一个API(如果存在),该API将接受“ ManagerID”并根据Manager ID返回所有作业。
  2. 否则,您可以从getJobs API过滤数据(如果不存在pt 1 API)。

希望它能帮助您获得想法。 另外,您可能想向该项目的API开发人员咨询上述建议的API(第1页)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM