有些文章声称在使用JPA时避免了equals(从而避免了hashcode)的麻烦,在使用生成的ID时需要使用UUID,例如:
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private UUID id;
由于RESTful服务和Spring Data(以及@Entity -ies)紧密耦合,因此合理的问题是:
使用此类资源URL的最佳实践是什么:RESTful服务标准在URL中声明{Id}-s
,但在URL中看到UUID却很麻烦。
那么解决该问题的最佳实践是什么?
(或者可能是我错了,URL上的数字是否像b5607d38-8fc1-43ef-b44e-34967083c80a
一样不错?)
答案 0 :(得分:1)
URL上的数字没什么不好,例如:b5607d38-8fc1-43ef-b44e-34967083c80a
这个;在URL中包含UUID没什么问题。
URI / URL规则由RFC 3986定义。字母,数字和-
都是“未保留”字符,这意味着它们可以在URI中期望的任何位置使用。
在REST中,标识符是不透明的。客户端和通用组件不应从标识符本身中提取任何语义信息。这使服务器可以自由地将其需要的任何信息编码为自己的标识符。
/b5607d38-8fc1-43ef-b44e-34967083c80a
是资源的完美标识符。