【发布时间】:2015-07-01 11:57:06
【问题描述】:
我正在使用 @RepositoryRestResource 注释将 Spring JPA 数据公开为 RESTful 服务。它工作得很好。但是,我正在努力在 Angular 应用程序中引用特定实体。
众所周知,Spring Data Rest 不会序列化实体的 @Id,但 HAL 响应包含指向实体的链接(_links.self、_embedded.projects[]._links.self),如下例所示:
{
"_links": {
"self": {
"href": "http://localhost:8080/api/projects{?page,size,sort}",
"templated": true
}
},
"_embedded": {
"projects": [
{
"name": "Sample Project",
"description": "lorem ipsum",
"_links": {
"self": {
"href": "http://localhost:8080/api/projects/1f888ada-2c90-48bc-abbe-762d27842124"
}
}
},
...
我的 Angular 应用程序需要在 URL 中添加对特定 project 实体的引用,例如 http://localhost/angular-app/#/projects/{id}。我不认为使用 href 是个好主意。 UUID (@Id) 似乎更好,但没有明确列为字段。这是我卡住的地方。在阅读了大量文章后,我提出了两个想法,但我认为这两个都不是完美的:
想法 1:
启用 @Id 字段的显式序列化并仅使用它来引用对象。
警告:将数据库特定的内部结构暴露给前端。
想法 2:
将 @Id 字段保留在内部并创建一个额外的“业务标识符”字段,可用于识别特定对象。
警告:表中的额外字段(浪费空间)。
感谢您对此发表评论。也许我只是过于拘谨而无法实施所提出的任何一个想法,也许有更好的想法。
【问题讨论】:
标签: angularjs angular-ui-router spring-data-rest