如何配置.NET Core API始终返回JSON

3
我已创建了一个.NET Core API。如果我将端点设置为返回一个对象,则当前会成功地按预期以JSON格式返回它。然而,如果端点的返回类型是void,则它会给出一个200响应,但响应头是text/html,而不是application/json
如何配置我的.NET Core API,始终以JSON头提供响应?

请查看这个链接 - dcg
@dcg 我已经在 .NET 4.5 Web API 上应用了这个,但我认为这对 .NET Core 不起作用。 - mellis481
1
我认为这是你的 API 的消费者的责任。他们可以在请求的“接受”标头中放置他们想要的响应类型。 - Fabio
除了Fabio(接受标头正确),你是怎么看到它返回“text/html”的? - MindingData
为什么返回类型是void?为什么不返回一个ActionResult,然后再返回Json()结果呢? - ssmith
2个回答

1

您需要返回JsonResult类型,例如:

// GET: api/authors
[HttpGet]
public JsonResult Get()
{
    return Json(_authorRepository.List());
}

更多内容在这里


1
你是用什么库来使用“return Json(.....);”方法的? - MC9000
嗨@MC9000,我的答案中有一个链接;-)它是AspNetCore的一部分,确切地说是Microsoft.AspNetCore.Mvc.Controller.Json()。如果编译器找不到此方法,则可以再次检查您的控制器是否扩展了Controller类,例如: public class AuthorsController:Controller - Serg.ID

1
在Startup.cs中的ConfigureServices方法中添加一个类型为ProducesAttribute("application/json")的过滤器。
    public void ConfigureServices(IServiceCollection services)
    {
        services.AddMvc(options =>
            {
                options.Filters.Add(new ProducesAttribute("application/json"));
            });
    }

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接