如何向 HTTP 客户端发送 GET 请求以根据参数检索数据?
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 检索所有作业。 IE。我只想显示 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)
);
}
我认为这与您正在使用和存在的 API 更相关。在这里你可以做:
- 呼叫另一个 API(如果存在)将接受 "ManagerID" 并将
return 基于经理 ID 的所有作业。
- 否则您可以从 getJobs API 中过滤数据(如果第 1 点 API 不存在)。
希望对您有所帮助。另外,您可能想就上述建议 API(pt. 1).
询问该项目的 API 开发人员
此问题取决于您的 REST API 和您的设计
如果可以添加新的RESTAPI,建议在"ManagerID"的基础上添加return"Jobs"的新REST服务(优化方案)
如果没有,您可以通过以下方式过滤 returned 列表:
loadExistingJobsByManagerId(managerId: string) {
this._jobService.getJobs().subscribe(
(listJobs) => {
this.jobs = listJobs;
this.filtered = listJobs.filter(job => job.managerId === managerId);
},
(err) => console.log(err)
);
}
在我的 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 检索所有作业。 IE。我只想显示 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)
);
}
我认为这与您正在使用和存在的 API 更相关。在这里你可以做:
- 呼叫另一个 API(如果存在)将接受 "ManagerID" 并将 return 基于经理 ID 的所有作业。
- 否则您可以从 getJobs API 中过滤数据(如果第 1 点 API 不存在)。
希望对您有所帮助。另外,您可能想就上述建议 API(pt. 1).
询问该项目的 API 开发人员此问题取决于您的 REST API 和您的设计
如果可以添加新的RESTAPI,建议在"ManagerID"的基础上添加return"Jobs"的新REST服务(优化方案)
如果没有,您可以通过以下方式过滤 returned 列表:
loadExistingJobsByManagerId(managerId: string) {
this._jobService.getJobs().subscribe(
(listJobs) => {
this.jobs = listJobs;
this.filtered = listJobs.filter(job => job.managerId === managerId);
},
(err) => console.log(err)
);
}