Angular In-memory-web-api 找不到单个对象抛出 404
Angular In-memory-web-api not finding individual objects throws 404
我有一个 angular 应用程序,我正在使用内存中的网络-api 来模拟一些对尚未启动的 REST api 的 http 调用,并且运行.
我正在尝试通过点击以下应用程序路由-module.ts 设置来获取一些 Podcast 对象:
const routes: Routes = [
{ path: 'podcast/:name', component: PodcastComponent }
];
在我的组件中,我从播客服务调用 getPodcast() 方法,如下所示:
getPodcast(name): void {
this.podcastService.getPodcast(name).subscribe(Podcast => {
this.podcast = Podcast;
console.log("This.podcast = " + JSON.stringify(this.podcast));
this.getEpisodes();
});
}
播客服务如下所示:
private podcastUrl = 'api/podcasts';
getPodcast(name): Observable<Podcast> {
return this.http.get<Podcast>(`${this.podcastUrl}/${name}`);
}
我的内存网络-api 看起来像这样:
const podcasts = [
{ name: '@user1' },
{ name: '@user2' },
{ name: '@user3' }
];
return {
podcasts
};
}
我有一个播客对象定义为:
export class Podcast {
name: string;
}
然而,当我尝试获取 Podcast 时,它会在控制台中抛出 404:
ERROR {body: {…}, url: "api/podcasts/@user1", headers: HttpHeaders, status: 404, statusText: "Not Found"}
URL看起来不错,不知道为什么不行。
最奇怪的是,如果我获得所有播客,它确实有效!
在服务中我有一个获取所有播客的方法:
getPodcasts(): Observable<Podcast[]> {
return this.http.get<Podcast[]>(this.podcastUrl);
}
然后更改组件中的 getPodcast() 函数以调用此:
getPodcast(name): void {
this.podcastService.getPodcasts().subscribe(Podcasts => {
Podcasts.forEach((podcast, i) => {
if(podcast.name === name) this.podcast = podcast;
});
});
}
然后它就可以完美运行了。我在这里做一些完全愚蠢的事情?这是非常奇怪的行为...(我是 Angular 的新手,请多关照!)
两件事,
第一:`
The in-memory web api library currently assumes that every collection
has a primary key called id.
`如此处所述link description here
第二:如果你想"get"使用不同于"id"的东西,你必须使用这个语法:
GET api/heroes?name=^j //URL?PropertyName=Value
希望对您有所帮助
我有一个 angular 应用程序,我正在使用内存中的网络-api 来模拟一些对尚未启动的 REST api 的 http 调用,并且运行.
我正在尝试通过点击以下应用程序路由-module.ts 设置来获取一些 Podcast 对象:
const routes: Routes = [
{ path: 'podcast/:name', component: PodcastComponent }
];
在我的组件中,我从播客服务调用 getPodcast() 方法,如下所示:
getPodcast(name): void {
this.podcastService.getPodcast(name).subscribe(Podcast => {
this.podcast = Podcast;
console.log("This.podcast = " + JSON.stringify(this.podcast));
this.getEpisodes();
});
}
播客服务如下所示:
private podcastUrl = 'api/podcasts';
getPodcast(name): Observable<Podcast> {
return this.http.get<Podcast>(`${this.podcastUrl}/${name}`);
}
我的内存网络-api 看起来像这样:
const podcasts = [
{ name: '@user1' },
{ name: '@user2' },
{ name: '@user3' }
];
return {
podcasts
};
}
我有一个播客对象定义为:
export class Podcast {
name: string;
}
然而,当我尝试获取 Podcast 时,它会在控制台中抛出 404:
ERROR {body: {…}, url: "api/podcasts/@user1", headers: HttpHeaders, status: 404, statusText: "Not Found"}
URL看起来不错,不知道为什么不行。
最奇怪的是,如果我获得所有播客,它确实有效!
在服务中我有一个获取所有播客的方法:
getPodcasts(): Observable<Podcast[]> {
return this.http.get<Podcast[]>(this.podcastUrl);
}
然后更改组件中的 getPodcast() 函数以调用此:
getPodcast(name): void {
this.podcastService.getPodcasts().subscribe(Podcasts => {
Podcasts.forEach((podcast, i) => {
if(podcast.name === name) this.podcast = podcast;
});
});
}
然后它就可以完美运行了。我在这里做一些完全愚蠢的事情?这是非常奇怪的行为...(我是 Angular 的新手,请多关照!)
两件事,
第一:`
The in-memory web api library currently assumes that every collection has a primary key called id.
`如此处所述link description here
第二:如果你想"get"使用不同于"id"的东西,你必须使用这个语法:
GET api/heroes?name=^j //URL?PropertyName=Value
希望对您有所帮助