【问题标题】:URL with reference to object from HATEOAS REST response in AngularJSURL 引用来自 AngularJS 中 HATEOAS REST 响应的对象
【发布时间】: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


    【解决方案1】:

    为了给你另一个选择,Angular+Spring Data Rest 有一个特殊的包装器,它可能会帮助你:

    https://github.com/guylabs/angular-spring-data-rest

    【讨论】:

    • 谢谢!我已经检查过了,但没有给我任何指示。演示不涵盖我的场景 - 有类别列表,但我希望看到带有特定类别项目的子视图的链接。它需要将 URL 传递给类别(即:localhost:8080/rest/categories/1)或类别 ID(1)。后者对我来说更干净,但只要类别对象没有明确列出 id 字段,我就没有办法得到它。
    猜你喜欢
    • 2012-10-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-01-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多