【发布时间】: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”来关联它。
我现在需要:
- 验证 UserId 是否有效(即存在)
- 如果 UserId 有效,那么它不应该已经与 Cook 关联(即一对一)
所以,我的问题是。应如何执行此验证以及在此方法中应在何处进行? Cook 服务如何知道它收到了有效的 UserId?
【问题讨论】:
-
请教用户服务?
-
什么是您的有效用户 ID?
-
@Evk 这是可能的。将自己耦合到其他服务是否违反了任何规定?即我会向用户服务发出 HTTP 请求以请求信息?还是只是优雅地失败,其他服务因任何原因而关闭?
-
@Isma 有效的 UserId 是存在于用户服务中且尚未与 Cook 关联的用户。
-
好吧,您要么拥有共享状态(例如数据库,由所有\几个服务使用),要么您询问服务“拥有”信息,没有其他办法。有时,您还可以同步多个服务的状态(因此两者都有用户的“数据库”,并且厨师服务会定期从用户服务中提取新\更改\删除用户的更新)。
标签: c# rest microservices