【问题标题】:Why Does Scaffolded ASP.NET Core Controller return NoContent() and not OKSuccess()?为什么脚手架 ASP.NET Core 控制器返回 NoContent() 而不是 OKSuccess()?
【发布时间】:2018-04-14 12:41:30
【问题描述】:

我正在尝试使用 ASP.NET Core 2.0 构建 100% 标准 REST 服务。当我使用 Visual Studio 2017 工具搭建控制器时,它使用编写良好的 GET、PUT、POST 和 DELETE 方法构建了一个很棒的异步控制器。

我想知道为什么 Put 返回 NoContent 而不是 OK。好像加了。

   // PUT: api/Sessions/5
    [HttpPut("{id}")]
    public async Task<IActionResult> PutSessionRec([FromRoute] int id, [FromBody] SessionRec sessionRec)
    {
        if (!ModelState.IsValid)
        {
            return BadRequest(ModelState);
        }

        if (id != sessionRec.Id)
        {
            return BadRequest();
        }

        _context.Entry(sessionRec).State = EntityState.Modified;

        try
        {
            await _context.SaveChangesAsync();
        }
        catch (DbUpdateConcurrencyException)
        {
            if (!SessionRecExists(id))
            {
                return NotFound();
            }
            else
            {
                throw;
            }
        }

        return NoContent();
    }

DELETE GET 和 POST 都返回 200's (OK)

【问题讨论】:

  • HTTP Code 204: No Content: "HTTP 204 No Content 成功状态响应码表示请求已经成功,但是客户端不需要离开当前页面。”
  • 感谢@RonBeyer Axios(我的 JavaScript spa rest 库)将 204 视为错误,我现在正在研究为什么(似乎是错误的)。
  • 您使用的是哪个 javascript 库?

标签: c# asp.net-mvc asp.net-core


【解决方案1】:

PUT的常见响应是'204'(无内容),表示你的请求处理成功,不需要重定向到其他页面,

顺便说一句,2xx 响应是成功响应,您应该同样对待。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-12-17
    • 1970-01-01
    • 2017-11-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多