使用上下文验证模型



我想根据给定的条件验证传入的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,因为 ID 实际上在 URL 中。如果 URL 中没有,则需要模型中有一个。

最新更新