|
需求:微服务项目中使用 Refit 调用 HTTP 接口,如果参数中有枚举类型,接口会返回“400 Bad Request”错误,原因是因为 Refit 默认将对象中的枚举转换成字符串导致,接口无法将字符串转换成枚举报错,如下:
{
"type": "https://tools.ietf.org/html/rfc7231#section-6.5.1",
"title": "One or more validation errors occurred.",
"status": 400,
"traceId": "00-3aef79a91ce9c411883953c9aaccb48a-68917b547ba8a2e5-00",
"errors": {
"req": [
"The req field is required."
],
"$.languagePermissions": [
"The JSON value could not be converted to LanguagePermissionsEnum. Path: $.languagePermissions | LineNumber: 0 | BytePositionInLine: 145."
]
}
}
官方解释称将枚举默认转换成字符串的原因是因为增加可读性,方便阅读参数内容信息。参考:超链接登录可见。
默认行为是将枚举序列化为字符串,您可以通过向序列化器提供自己的设置来更改行为:超链接登录可见。
所以,我们传入自定义的 Refit 设置,并不使用默认设置,删除 JsonStringEnumConverter 转换器即可,代码如下:
解决方案:超链接登录可见。
(完)
|
上一篇:.NET/C# 轻量级 Mapster 对象映射框架下一篇:.NET/C# 简单使用 Polly 教程
|