在微服务之间共享实体ID

时间:2017-04-28 14:04:31

标签: rest microservices hateoas

假设我有一个Users微服务。其数据是在HATEOAS“模式”之后通过REST API消耗的,因此常见的请求/响应将是这样的:

GET /users

{
  results: 5,
  data :[
    {
      name: "John Doe",
      email: "whatever",
      ...,
      links : [
        {
          rel: "self",
          href: "/users/1"
        }
      ]
    },
    ...
  ]
}

正如HATEOAS所说,不会返回用户的ID,而是返回“self”的链接。

到目前为止,这么好。现在,我想要另一个微服务来管理用户的图片。在那个新的微服务中,一个用户和她的照片之间存在关系,所以我需要一个用户标识符。

我应该在图片微服务中使用“/ users / 1”(“自我”链接)作为用户ID吗?

如果没有,我该如何处理?

1 个答案:

答案 0 :(得分:0)

您不能假设网址的结构,但您可以返回实体ID。

  

我应该在照片中使用“/ users / 1”(“自我”链接)作为用户ID   微服务?

如果你这样做,你假设第二个微服务使用相同的url方案,这是坏的。你把两个微服务结合起来。

此外,请求响应中包含的网址仅对该(微)服务有意义,您不能只假设另一个系统中的相应resource具有相同的id