项目场景:
我们在使用Asp.Net Core WebApi和前端进行交互时,经常会因为提交数据中有时间自动而导致服务端接收不到数据,前端报错的问题。
问题描述
在开发中经常是后端同学把WebApi开发完毕后,然后前端同学进行接口对接开发。理想是美好的,可现实往往会给你一巴掌。前端发现对接口时,总是报错400。提示时间转换失败,前端同学都检查了好几遍时间提交格式,还是失败。具体如下:
原因分析:
出现上面的情况可以确定就是时间格式问题。由于Asp.Net Core 内置了 System.Text.Json类来进行序列化和反序列。该类支持的时间格式如:
微软的这个类,在转换时间时,时间中必须含有 T 。否则转换失败。这也就是为什么前端提交的时间后,总是接口报错啦!
解决方案:
方法1:替换微软默认的System.Text.Json转换类
- 通过Nuget安装Microsoft.AspNetCore.Mvc.NewtonsoftJson依赖库
2. StartUp的ConfigServices中注册
services.AddControllers().AddNewtonsoftJson()
方法2:时间戳
前端同学和后端开发同学协商,将时间字段的数据类型改为字符串。前端传递时间戳,后端接收后将其转为转为时间即可。
方法3:时间字段字符串
前端同学提交字符串形式的时间。后端将接收参数模型的时间字段类型改为字符串。