管理员
双命名空间怎么分
/api/admin/* 要登录、包一层 data;/api/public/* 匿名可读、直接返回。可见性规则只写一次。
两套命名空间不是为了好看,是因为它们的每一条性质都相反:要不要登录、要不要包装响应、能不能缓存、返回哪些字段。
混在一起的写法是给同一个 controller 加一个 optional auth,然后在 service 里根据「有没有用户」分支返回不同字段。试过,分支会越来越多,而且每加一个字段都得重新想一遍这个字段该不该给匿名用户看。
现在的做法是 public 的字段是**挑出来**的白名单,不是从完整实体里删掉几个。数据库加一列,默认不会漏出去 —— 最坏的情况是官网少显示一个字段,而不是把草稿泄露给访客。这两种失败的代价不对等,所以选择权不在「哪个写起来省事」。