Angular 2:url 'api/heroes'是在哪里定义的?
Angular 2: Where is url 'api/heroes' defined?
我正在学习 Angular 2 Tour of Heroes 教程的第 7 部分。在包含 InMemoryWebApiModule 之后,hero.service.ts
使用 private heroesUrl = 'api/heroes';
。
应用程序如何知道 WebAPI url 是 api/heroes
?我没有在 app-routing.module.ts
中看到这个定义。 url 映射到 InMemoryWebApiModule 是如何工作的?
我在这里继续我的经验......不深入了解 InMemoryWebApiModule......
"api" 似乎被 InMemoryWebApi 捕获。 "heroes" 是 createDb() 方法中定义的数据结构。
例如,我的是这样的:
private baseUrl = 'api/products';
我的数据文件如下所示:
export class ProductData implements InMemoryDbService, InMemoryBackendConfig {
createDb() {
let products: IProduct[] = [ ...];
return { products };
}
}
在页面顶部附近,他们为此定义了该教程的导入。
--删除了题外代码参考,我有点看错了问题。--
然后,他们在下方为我们提供了所述项目的代码。
InMemoryWebAPI 使用
https://github.com/angular/in-memory-web-api
创建一个本地数据库,对它的调用将引用。该模块似乎是 capturing/registering /api 调用的项目。
这只是使用实际后端的替代方法。
InMemoryWebApi 是一个自以为是的工具 - 它使用其内部约定。
createDb
方法应该 return 一个对象,其中的键(即您附加数据的位置)将与您的 api URL 的 slug 相匹配, 所以为了处理 heroes
, return { heroes: yourData }
的 slug。通常,在这种情况下使用 shorthand:
const heroes = [ /* your data */ ];
return { heroes };
现在,api
是该库采用的默认前缀。它可以根据您的具体情况进行更改,只需将其作为 InMemoryBackendConfigArgs
参数的一部分提供即可。例如,如果您知道英雄的端点将位于 myapi/v2/heroes
,请使用以下配置:
HttpClientInMemoryWebApiModule.forRoot(DataInmemService, {
apiBase: 'myapi/v2'
})
我正在学习 Angular 2 Tour of Heroes 教程的第 7 部分。在包含 InMemoryWebApiModule 之后,hero.service.ts
使用 private heroesUrl = 'api/heroes';
。
应用程序如何知道 WebAPI url 是 api/heroes
?我没有在 app-routing.module.ts
中看到这个定义。 url 映射到 InMemoryWebApiModule 是如何工作的?
我在这里继续我的经验......不深入了解 InMemoryWebApiModule......
"api" 似乎被 InMemoryWebApi 捕获。 "heroes" 是 createDb() 方法中定义的数据结构。
例如,我的是这样的:
private baseUrl = 'api/products';
我的数据文件如下所示:
export class ProductData implements InMemoryDbService, InMemoryBackendConfig {
createDb() {
let products: IProduct[] = [ ...];
return { products };
}
}
在页面顶部附近,他们为此定义了该教程的导入。
--删除了题外代码参考,我有点看错了问题。--
然后,他们在下方为我们提供了所述项目的代码。
InMemoryWebAPI 使用 https://github.com/angular/in-memory-web-api 创建一个本地数据库,对它的调用将引用。该模块似乎是 capturing/registering /api 调用的项目。
这只是使用实际后端的替代方法。
InMemoryWebApi 是一个自以为是的工具 - 它使用其内部约定。
createDb
方法应该 return 一个对象,其中的键(即您附加数据的位置)将与您的 api URL 的 slug 相匹配, 所以为了处理 heroes
, return { heroes: yourData }
的 slug。通常,在这种情况下使用 shorthand:
const heroes = [ /* your data */ ];
return { heroes };
现在,api
是该库采用的默认前缀。它可以根据您的具体情况进行更改,只需将其作为 InMemoryBackendConfigArgs
参数的一部分提供即可。例如,如果您知道英雄的端点将位于 myapi/v2/heroes
,请使用以下配置:
HttpClientInMemoryWebApiModule.forRoot(DataInmemService, {
apiBase: 'myapi/v2'
})