【问题标题】:How to present resource id to client?如何向客户端显示资源 ID?
【发布时间】:2014-11-24 17:04:44
【问题描述】:

org.springframework.hateoas.ResourceSupport 已经包含一个getId 方法。

如果我的资源(或更好的域对象)包含需要呈现给客户端的整数 id,我无法添加简单的 id 并添加 getId/setId(因为 ResourceSupport 已经有了它)。

我应该返回一些<myResourceObjectName>_id 还是让客户端解释ResourceSupport 提供的id 链接/URL 更好?

【问题讨论】:

    标签: spring spring-hateoas hypermedia


    【解决方案1】:

    你可能想查看这篇文章how-to-expose-the-resourceid-with-spring-data-rest

     @Configuration
    public class MyCoolConfiguration extends RepositoryRestMvcConfiguration {
    
        @Override
        protected void configureRepositoryRestConfiguration(RepositoryRestConfiguration config) {
            config.exposeIdsFor(FooEntity.class);
        }
    }
    

    【讨论】:

      【解决方案2】:

      对于客户端而言,最初从(通过 GET)检索资源的 URL 它的 id。不应发生解释,客户端应将 URL 视为不透明字符串。

      【讨论】:

      • 但是我需要什么才能在客户端显示 id?
      • 你没有抓住重点。除了 URL 之外,您不需要任何其他东西来标识资源,因此使用 URL 作为 id。
      • 我明白了。但在某些情况下,您只需要表中的实际 id 即可呈现给客户,因为它具有含义。例如。生成的唯一订单 ID 和部分例如订单资源。
      • 重点是它应该对客户有意义。如果需要对集合中的资源进行排序,则应将排序参数传递给定义的关系。
      • EG:对于订单 ID,最好让您的 API 返回包含订单 ID 的标题字段。因为它实际上是客户试图呈现的订单的标题......碰巧标题也是您的后端使用的订单ID。客户端不应建立在服务器系统中定义的键之上……只能使用 URL。习惯起来有点棘手,但可以实现非常好的解耦。
      猜你喜欢
      • 2023-04-03
      • 1970-01-01
      • 2015-06-24
      • 2021-11-29
      • 2012-11-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多