当我们使用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或反射的情况下,有没有不同的方法或解决方案?有任何方法或模式吗?