如何将 null 值传递给 WebAPI 中的可空类型
How to pass null value to nullable types in WebAPI
我的函数如下:
[HttpGet]
[Route("Departments/{departmentid}/employeeByDeptId")]
[ResponseType(responseType: typeof(IList<Employee>))]
public HttpResponseMessage GetDetailsByDeptId(int departmentId, DateTime? sinceDate)
{
if (!ModelState.IsValid)
{
return Request.CreateErrorResponse(HttpStatusCode.BadRequest, ModelState);
}
var detailInfo = _employeeManager.GetDetailInfo(departmentId, sinceDate ?? _sinceDate);
return CreateHttpResponseMessage(detailInfo);
}
我在声明中将 sinceDate 设为 Nullable 类型,这样如果传递 null 值,它就会采用本地声明的“_sinceDate”变量中的日期。
现在如何在进行 API 调用时将空值传递给 sinceDate 参数。
当我从下方经过时url:
http://localhost:26754/v1/EmployeeMgnt/Departments/4/employeeByDeptId?sinceDate=2020-03-03
我得到了想要的结果。
现在我想将 sinceDate 作为 null 传递。我试过了
http://localhost:26754/v1/EmployeeMgnt/Departments/4/employeeByDeptId?sinceDate=null
http://localhost:26754/v1/EmployeeMgnt/Departments/4/employeeByDeptId?sinceDate 为空
都给了错误的请求错误。请告诉我如何在 API 调用中为 sinceDate 分配空值?
只需在您的路由参数中添加 parameterName = null
。
public HttpResponseMessage GetDetailsByDeptId(int departmentId, DateTime? sinceDate = null){
}
然后在您的请求中,您可以只排除该参数并使用;
访问
http://localhost:26754/v1/EmployeeMgnt/Departments/4/employeeByDeptId
另一种选择是添加重载。让 2 个函数名称接收不同的参数。
public HttpResponseMessage GetDetailsByDeptId(int departmentId, DateTime sinceDate){
}
public HttpResponseMessage GetDetailsByDeptId(int departmentId){
}
据我所知,对于阅读本文的任何人来说,已接受的答案(本身)不再有效。有关更多详细信息和 2 种不同的替代方法,请参阅 https://github.com/dotnet/aspnetcore/issues/6878#issuecomment-647830903。
我的函数如下:
[HttpGet]
[Route("Departments/{departmentid}/employeeByDeptId")]
[ResponseType(responseType: typeof(IList<Employee>))]
public HttpResponseMessage GetDetailsByDeptId(int departmentId, DateTime? sinceDate)
{
if (!ModelState.IsValid)
{
return Request.CreateErrorResponse(HttpStatusCode.BadRequest, ModelState);
}
var detailInfo = _employeeManager.GetDetailInfo(departmentId, sinceDate ?? _sinceDate);
return CreateHttpResponseMessage(detailInfo);
}
我在声明中将 sinceDate 设为 Nullable 类型,这样如果传递 null 值,它就会采用本地声明的“_sinceDate”变量中的日期。 现在如何在进行 API 调用时将空值传递给 sinceDate 参数。
当我从下方经过时url: http://localhost:26754/v1/EmployeeMgnt/Departments/4/employeeByDeptId?sinceDate=2020-03-03
我得到了想要的结果。 现在我想将 sinceDate 作为 null 传递。我试过了 http://localhost:26754/v1/EmployeeMgnt/Departments/4/employeeByDeptId?sinceDate=null http://localhost:26754/v1/EmployeeMgnt/Departments/4/employeeByDeptId?sinceDate 为空
都给了错误的请求错误。请告诉我如何在 API 调用中为 sinceDate 分配空值?
只需在您的路由参数中添加 parameterName = null
。
public HttpResponseMessage GetDetailsByDeptId(int departmentId, DateTime? sinceDate = null){
}
然后在您的请求中,您可以只排除该参数并使用;
访问http://localhost:26754/v1/EmployeeMgnt/Departments/4/employeeByDeptId
另一种选择是添加重载。让 2 个函数名称接收不同的参数。
public HttpResponseMessage GetDetailsByDeptId(int departmentId, DateTime sinceDate){
}
public HttpResponseMessage GetDetailsByDeptId(int departmentId){
}
据我所知,对于阅读本文的任何人来说,已接受的答案(本身)不再有效。有关更多详细信息和 2 种不同的替代方法,请参阅 https://github.com/dotnet/aspnetcore/issues/6878#issuecomment-647830903。