|  | 
 
上一篇:.NET/C# 轻量级 Mapster 对象映射框架下一篇:.NET/C# 简单使用 Polly 教程| 需求:微服务项目中使用 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 转换器即可,代码如下:
 
 解决方案:超链接登录可见。
 (完)
 
 | 
 |