【问题标题】:Validating data Id's between Microservices验证微服务之间的数据 ID
【发布时间】:2018-05-12 23:54:45
【问题描述】:

我有两个独立的 REST Api 服务:

  • 用户(api/用户)
  • 厨师(api/厨师)

还有一个网关 API 将在服务之间路由请求。

实体相关如下:

public class User
{
    public int Id {get; set;}
    public string FirstName {get; set;}
    public string LastName {get; set;}

    //Other properties relating to a user
}

public class Cook
{
    public int Id {get; set;}
    public string DisplayName {get; set;}
    public int UserId {get; set;}

    //Other properties relating to a cook
}

我可以 POST 到 api/Users 并创建一个新用户。如果用户愿意,他们可以在某个时候成为厨师。这意味着我会发布到 api/Cooks 并且必须指定“UserId”来关联它。

我现在需要:

  1. 验证 UserId 是否有效(即存在)
  2. 如果 UserId 有效,那么它不应该已经与 Cook 关联(即一对一)

所以,我的问题是。应如何执行此验证以及在此方法中应在何处进行? Cook 服务如何知道它收到了有效的 UserId?

【问题讨论】:

  • 请教用户服务?
  • 什么是您的有效用户 ID?
  • @Evk 这是可能的。将自己耦合到其他服务是否违反了任何规定?即我会向用户服务发出 HTTP 请求以请求信息?还是只是优雅地失败,其他服务因任何原因而关闭?
  • @Isma 有效的 UserId 是存在于用户服务中且尚未与 Cook 关联的用户。
  • 好吧,您要么拥有共享状态(例如数据库,由所有\几个服务使用),要么您询问服务“拥有”信息,没有其他办法。有时,您还可以同步多个服务的状态(因此两者都有用户的“数据库”,并且厨师服务会定期从用户服务中提取新\更改\删除用户的更新)。

标签: c# rest microservices


【解决方案1】:

一个服务调用另一个服务完全没问题。

当您收到对 Gateway API 的请求时,您应该向 Cooks 服务发送相同的请求,Cooks 服务会根据用户服务验证用户 ID。

希望对你有帮助

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-02-07
    • 2018-01-18
    • 2020-04-05
    • 2019-08-02
    • 1970-01-01
    • 2021-12-10
    • 2019-02-17
    • 2017-05-29
    相关资源
    最近更新 更多