【发布时间】:2021-11-28 04:52:38
【问题描述】:
总结
如果请求中省略了默认值,有没有办法设置它们?
详情
我有一个定义默认值的查询参数模型。但是,请求中省略查询参数时,不设置默认值。
请求是这样定义的
[HttpGet("list")]
public async Task<IList<Entry>> GetJsonAsync([FromQuery] Query query)
=> await _store.QueryAsync(query);
这样的查询
public class Query
{
public DateTime? After { get; set; } = DateTime.MinValue;
public TimeSpan? Duration { get; set; } = TimeSpan.MaxValue;
}
请求如下所示
http://localhost/api/list?after=2021-10-08T08:35Z&duration=10d
http://localhost/api/list
如果我在没有查询参数的情况下调用它 After 和 Duration 将是空的。
如果我使它们不可为空,我会收到验证错误。
public class Query
{
public DateTime After { get; set; } = DateTime.MinValue;
public TimeSpan Duration { get; set; } = TimeSpan.MaxValue;
}
结果
"errors": {
"After": [
"The field must be set"
],
"Duration": [
"The field must be set"
]
}
如果在请求中省略After 和Duration 默认值,是否有一种简单的方法来设置它们?
【问题讨论】:
标签: asp.net-core default-value