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

希望对您有所帮助