如何使用Restful中的资源扩展来检索实体相关资源(聚合根)

时间:2017-08-19 21:00:46

标签: c# .net domain-driven-design restful-authentication

当我们使用Domain Driven Design的资源扩展时,如下所示;客户希望帐户的父目录和组在一个响应中扩展。这是真的。

GET /v1/accounts/ZugcG3JHQFOTKGEXAMPLE?expand=directory,groups
Response

{
    "href": "https://.../v1/accounts/ZugcG3JHQFOTKGEXAMPLE",
    "username": "lonestarr",
    "directory": {
        "href": "https://.../v1/directories/S2HZc7gXTumVYEXAMPLE",
        "name": "Spaceballs",
        "accounts": {
            "href":"https://.../v1/directories/S2HZc7gXTumVYEXAMPLE/accounts"
        },
        "groups": {
            "href":"https://.../v1/directories/S2HZc7gXTumVYEXAMPLE/groups"
        },
        "tenant":{
            "href":"https://.../v1/tenants/wGbGaSNuTUix9EXAMPLE"
        }
    },
    "tenant": {
        "href": "https://.../v1/tenants/wGbGaSNuTUix9EXAMPLE"
    },
}

但我对使用最佳做法有疑问。我不想在帐户存储库或域服务上检索组和租户时使用“if / switch case”语法。

     Get ICollection<Account> GetAccounts(string expand){
     ICollection<Account> accounts= get accounts from db;
     if(expand.include("directory"))
     {.... accounts.directories=directories  }
     if(expand.include("groups"))
     {.... accounts.groupies=groupies}
     returns accounts;
}

在没有if / switch或反射的情况下,有没有不同的方法或解决方案?有任何方法或模式吗?

0 个答案:

没有答案