c# - C# Web Api 传递日期时间参数
问题描述
我有一个 api,我在这里发送多个参数。网址如下。
http://localhost:7150/api/logLoginDetails/GetLogLoginDetails?userId=&userIp=192.168.2.1&startTime=22.9.2020 18:07:13&endTime=23.9.2020 18:07:13
但是当我切换到api时,只有userIp信息来了。userId字段应该为null,但是我应该怎么做才能确保包含datetime的字段不为null。
在下面的方法中,只填写了userIp信息。
[RoutePrefix("api/logLoginDetails")]
public class LogLoginDetailsController : ApiBaseController
{
[HttpGet, Route ("GetLogLoginDetails")]
public HttpResponseMessage GetLogLoginDetails (int? userId = null, string userIp = null, DateTime? startTime = null, DateTime? endTime = null)
{
try
{
return CROk (logLoginDetailsService.GetLogLoginDetails (userId: userId, userIp: userIp, startTime: startTime, endTime: endTime));
}
catch (Exception e)
{
return CRException (e);
}
}
}
解决方案
我相信问题与您用来传递这些值的日期格式有关。日期部分和小时部分之间的空格被替换为 %20 并且生成的文本无法解析为日期时间。
您可以尝试使用这种格式:YYYY-MM-DDTHH:mm:SS
像这样:
http://localhost:7150/api/logLoginDetails/GetLogLoginDetails?userId=&userIp=192.168.2.1&startTime=2020-09-22T18:07:13&endTime=2020-09-23T18:07:13
或者,如果您真的需要使用该格式,也许您可以将类型更改为字符串。像这样:
public HttpResponseMessage GetLogLoginDetails(int? userId = null, string userIp = null, string startTime = null, string endTime = null)
{
try
{
return CROk(logLoginDetailsService.GetLogLoginDetails(userId: userId, userIp: userIp, startTime: startTime, endTime: endTime));
}
catch (Exception e)
{
return CRException(e);
}
}
推荐阅读
- signalr - 如何将 SignalR Hub 类(不是 hubcontext)注入控制器
- angularjs - 我们可以延迟 angularjs 中的渲染,直到所有变量都从回调中获取所需的值
- r - R:根据另一个数据帧中的值查找数据帧中的值
- react-native - 在 React Native 上使用 flexBox 的 2 列布局
- r - 提取从 BSgenome 库导入的结构中包含的所有数据
- php - 在 html 中使用数据/字符串 php?
- javascript - 使用 window.history 时直接访问 url 的最佳实践
- c++ - 在 C++ 中打印到控制台的最佳方式是什么?
- python - 折叠连续的线性层
- scala - 如何在scala中设置控制台光标位置?