创建接受所有键值对的数据模型



>我有一个Web API控制器,其中包含如下的post命令:

    [HttpPost]
    public void Post([FromBody]UserProfile value)
    {
       ...
    }

这是我的用户配置文件类的样子:

public class UserProfile
{
    public string UserId { get; set; }
    public string Email { get; set; }
}

如果客户端发送如下所示的 post 请求,我希望还能够反序列化额外的字段。有没有办法在我的数据模型中动态创建这些字段?

{
    "userId": "a123",
    "email": "foo@bar.com",
    "firstName": "John",
    "lastName": "Doe",
    "...": "..."
}

我希望能够接受(至少(userId和电子邮件,但是如果用户向我发送更多数据,我也想接受它,以便将其存储到NoSQL数据库中。

我可能只是将我的对象从用户配置文件更改为字典,但我希望我的招摇文档显示 UserId 和电子邮件。

有没有办法在我的数据模型中动态创建这些字段?

我能想到的一个解决方案是接受一个字典,它可以容纳任意数量的键值对,如下所示:

[HttpPost]
public void Post([FromBody]IDictionary<string, string> pairs)
{
   ...
}

您可以从字典中获取UserIdEmail,如果有更多项目,那么您也可以处理这些项目。

您可以做的另一件事是尝试考虑对象可以具有的所有可能属性,并使其中大多数是可选的,然后在控制器中检查它们是否具有值并处理它们。

相关内容

  • 没有找到相关文章

最新更新