【问题标题】:How to configure .NET Core API to always return JSON如何将 .NET Core API 配置为始终返回 JSON
【发布时间】:2017-03-21 19:36:32
【问题描述】:

我创建了一个 .NET Core API。如果我将端点设置为返回一个对象,它当前会根据需要以 JSON 成功返回它。但是,如果端点的返回类型是void,它会给出一个200响应,但是响应头是text/html而不是application/json

如何配置我的 .NET Core API 以始终提供带有 JSON 标头的响应?

【问题讨论】:

  • 看看this
  • @dcg 我已经在 .NET 4.5 Web API 上应用了它,但我认为这不适用于 .NET Core。
  • 我认为这是您的 API 使用者的责任。他们可以将他们想要的响应类型放在请求的Accept 标头中。
  • 除了 Fabio(Accept header 是正确的),你怎么看到它返回“text/html”?
  • 为什么返回类型为void?为什么不返回一个 ActionResult 然后返回一个 Json() 结果?

标签: c# json asp.net-web-api asp.net-core


【解决方案1】:

需要返回JsonResult类型,比如

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

more is here

【讨论】:

  • 您使用什么库才能使用“return Json(.....);”方法?
  • 嗨@MC9000,我的答案中有一个链接;-) 准确地说,它是 AspNetCore 的一部分 Microsoft.AspNetCore.Mvc.Controller.Json() 如果你的编译器找不到这个方法,你可以仔细检查您的控制器是否扩展了 Controller 类,例如公共类 AuthorsController : 控制器
【解决方案2】:

向 ConfigureServices 添加一个 ProducesAttribute("application/json") 类型的过滤器。在 Startup.cs 中

    public void ConfigureServices(IServiceCollection services)
    {
        services.AddMvc(options =>
            {
                options.Filters.Add(new ProducesAttribute("application/json"));
            });
    }

【讨论】:

    猜你喜欢
    • 2019-04-22
    • 2021-12-01
    • 2012-09-19
    • 2022-01-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-08-28
    • 1970-01-01
    相关资源
    最近更新 更多