控制器参数:特定或通用

时间:2016-10-21 05:29:53

标签: c# api parameters architecture

考虑以下情况: 我想更新用户的多个字段(名字,姓氏,年龄......)

使用RESTFUL API

PUT /user/{userId}

在C#中我会有以下方法

UpdateUser(int userId, User user)

问题是User类可能包含许多永远不会改变的参数(例如id,email,role,affiliation,registrationDate,...)

因此,在swagger或api描述中,有时很难知道哪些是必需/可选参数,并且api的描述变得越来越长,因为User对象可能包含许多对此更新不重要的字段操作

要解决此问题,我可以创建一个仅包含必填字段的特定“UpdateUserParameters”对象。问题是,如果我为每个API执行此操作,那么我将以许多不同的对象结束, in fine 每次代表用户的子部分。

我当然也可以在api的注释部分指定重要的参数,即使它比开发人员的第一个解决方案更不明显(说到这一点,swagger将放置整个User对象定义,这可能会令人不安。

那么处理这个问题的最佳做法是什么?

0 个答案:

没有答案