使用上下文验证模型

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用上下文验证模型相关的知识,希望对你有一定的参考价值。

我想根据给定的条件验证传入的JSON。对于例如我有一个模型类定义为,

public class Component 
{
    public string Id {get; set;}

    [JsonProperty]
    [Required]
    public string Name { get; set; }

    [JsonProperty]
    public string Description { get; set; }

}

对于POST请求,我想确保调用者不发送Id属性值,因为它将由服务生成。但是,对于PUT请求,我想验证是否指定了Id属性值。我有多个需要类似功能的JSON。在控制器操作的上下文中强制进行模型验证的最佳方法是什么?我使用FluentValidation来验证JSON属性,但它不考虑上下文(控制器操作)。

答案

我看待它的方式,如果您不需要用户发送ID,那么您的模型类中没有ID。

拥有多个模型是完美的,一个用于PUT,一个用于POST。这很好,因为人们知道应该通过什么属性。

所以底线:只有你在模型中需要的属性,仅此而已,这可以阻止任何歧义,并提供更高效的API。

还有一件事需要考虑,PUT通常不需要ID,因为其中一个实际上在URL中。如果URL中没有,那么您需要在模型中使用一个。

以上是关于使用上下文验证模型的主要内容,如果未能解决你的问题,请参考以下文章

python使用上下文对代码片段进行计时,非装饰器

代码 = 134110 - 验证错误缺少强制目标属性上的属性值

片段无法转换为上下文

Django REST框架--认证和权限

如何从RegEx分组中“排除”空白区域?

片段未附加到上下文 - 延迟的 UI 更改