System.Text.json在Refit中可以使用API的null响应
假设我有一个REFIT接口:
public interface SomeApi
{
[Get("/DoStuff")]
Task<MyClass> DoStuff();
}
我在依赖项注入中注册了此Refit客户端
services.AddRefitClient<SomeApi>(new RefitSettings(
new SystemTextJsonContentSerializer(
new JsonSerializerOptions
{
PropertyNamingPolicy = JsonNamingPolicy.CamelCase
})))
.ConfigureHttpClient(ConfigureClient(config));
。但是,我的/dostuff
端点可以返回 null
。使用System.Text.json,这将在我的Refit客户端中抛出一个例外。使用Newtonsoft,这可以正常工作。
如果我的API端点可以返回 null
,我该如何使上述代码工作?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
在@DBC的帮助下解决了它。由于system.text.json非常严格地使用有效的JSON,而不是什么,您有两个选择:使API返回有效的JSON(在这种情况下,
{}
而不是> null
),或恢复使用newtonsoft(不太严格)。Figured it out with the help of @dbc . Since System.Text.Json is very strict about with is valid json and what isn't, you have two options: make your API return a valid json (in this case,
{}
instead ofnull
), or revert back to using Newtonsoft (which is less strict).文档
documentation
如果服务器端为ASP.NET Core Web API,则关注URL可能会为您提供帮助。
响应204个状态代码在值得挑选的内容时抛出。 #1128
The follow URL might help you, if the server side is ASP.NET Core Web Api.
Responses with a 204 status code throw when deserializing content. #1128