在微服务之间共享实体 ID
Sharing entity ID between microservices
假设我有一个 Users
微服务。它的数据是通过 REST API 在 HATEOAS "pattern" 之后使用的,所以一个常见的 request/response 应该是这样的:
GET /users
{
results: 5,
data :[
{
name: "John Doe",
email: "whatever",
...,
links : [
{
rel: "self",
href: "/users/1"
}
]
},
...
]
}
正如 HATEOAS 所说,不会返回用户 ID,而是 link 到 "self"。
到目前为止,还不错。现在,我想要另一个微服务来管理用户的图片。在那个新的微服务中,一个用户和她的照片之间存在关系,所以我需要一个用户标识符。
我应该在图片微服务中使用“/users/1”("self" link)作为用户 ID 吗?
如果没有,我该如何处理?
您不能采用 url 的结构,但可以 return 实体 ID。
Should I use "/users/1" ("self" link) as user ID in the pics
microservice?
如果你这样做,你假设第二个微服务使用相同的 url 方案,这是不好的。您将这两个微服务结合起来。
此外,请求响应中包含的 url 仅对该(微)服务有意义,您不能假设另一个系统中相应的 resource
具有相同的意义id
假设我有一个 Users
微服务。它的数据是通过 REST API 在 HATEOAS "pattern" 之后使用的,所以一个常见的 request/response 应该是这样的:
GET /users
{
results: 5,
data :[
{
name: "John Doe",
email: "whatever",
...,
links : [
{
rel: "self",
href: "/users/1"
}
]
},
...
]
}
正如 HATEOAS 所说,不会返回用户 ID,而是 link 到 "self"。
到目前为止,还不错。现在,我想要另一个微服务来管理用户的图片。在那个新的微服务中,一个用户和她的照片之间存在关系,所以我需要一个用户标识符。
我应该在图片微服务中使用“/users/1”("self" link)作为用户 ID 吗?
如果没有,我该如何处理?
您不能采用 url 的结构,但可以 return 实体 ID。
Should I use "/users/1" ("self" link) as user ID in the pics microservice?
如果你这样做,你假设第二个微服务使用相同的 url 方案,这是不好的。您将这两个微服务结合起来。
此外,请求响应中包含的 url 仅对该(微)服务有意义,您不能假设另一个系统中相应的 resource
具有相同的意义id