使用上下文验证模型
Validate Model with Context
我想根据给定标准验证传入的 JSON。例如我有一个模型 class 定义为,
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 class。
拥有多个模型非常好,一个用于 PUT,一个用于 POST。这很好,因为人们知道应该传递哪些属性。
所以最重要的是:模型中只包含您需要的属性,仅此而已,这可以消除任何歧义并提高生产力 API。
还有一件事需要考虑,PUT 通常不需要 ID,因为 URL 中确实有一个 ID。如果 URL 中没有,那么模型中需要一个。
我想根据给定标准验证传入的 JSON。例如我有一个模型 class 定义为,
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 class。
拥有多个模型非常好,一个用于 PUT,一个用于 POST。这很好,因为人们知道应该传递哪些属性。
所以最重要的是:模型中只包含您需要的属性,仅此而已,这可以消除任何歧义并提高生产力 API。
还有一件事需要考虑,PUT 通常不需要 ID,因为 URL 中确实有一个 ID。如果 URL 中没有,那么模型中需要一个。