当webApi返回null对象时,是否可以返回{}而不是null?这样可以防止我的用户在解析响应时出错.并使响应成为有效的Json响应?
我知道我可以手动设置它.当null是响应时,应该返回一个空的Json对象.但是,有没有办法自动为每个响应做到这一点?
如果您正在构建RESTful服务,并且没有从资源返回任何内容,我相信返回404(未找到)比使用空主体的200(OK)响应更正确.
您可以使用a HttpMessageHandler
对所有请求执行行为.下面的例子是一种方法.但是请注意,我很快就掀起了这个问题,它可能有一堆边缘错误,但它应该让你知道它是如何完成的.
public class NullJsonHandler : DelegatingHandler { protected override async TaskSendAsync(HttpRequestMessage request, CancellationToken cancellationToken) { var response = await base.SendAsync(request, cancellationToken); if (response.Content == null) { response.Content = new StringContent("{}"); } else if (response.Content is ObjectContent) { var objectContent = (ObjectContent) response.Content; if (objectContent.Value == null) { response.Content = new StringContent("{}"); } } return response; } }
您可以通过执行此处理程序来启用
config.MessageHandlers.Add(new NullJsonHandler());