ZetCode

ASP.NET Ok

最后修改于 2025 年 4 月 3 日

在本文中,我们将探讨 ASP.NET 8 中的 Ok 方法。该方法是从 Web API 控制器返回成功的 HTTP 200 响应的便捷方式。

ASP.NET 是一个跨平台、高性能的框架,用于构建现代 Web 应用程序。Ok 方法简化了使用数据返回成功响应的过程。

基本定义

ASP.NET 中的 Ok 方法是一个辅助方法,它创建一个 OkObjectResult 对象。此结果表示带有可选内容的 HTTP 200 OK 响应。

它通常在 Web API 控制器操作中使用,以指示操作成功。该方法可以包装任何应返回给客户端的对象。

Ok 是 ControllerBase 类的一部分, ControllerBase 是 Web API 控制器的基类。默认情况下,它会自动将响应对象序列化为 JSON。

ASP.NET Ok 示例

以下示例演示了 Web API 中 Ok 方法的各种用法。

Program.cs
var builder = WebApplication.CreateBuilder(args);
builder.Services.AddControllers();

var app = builder.Build();

app.MapControllers();
app.Run();

这设置了一个基本的 ASP.NET 应用程序,并支持控制器。MapControllers 方法为控制器启用属性路由。

Controllers/UsersController.cs
using Microsoft.AspNetCore.Mvc;

[ApiController]
[Route("api/[controller]")]
public class UsersController : ControllerBase
{
    private static List<User> _users = new()
    {
        new User(1, "John", "Doe", "john@example.com"),
        new User(2, "Jane", "Smith", "jane@example.com"),
        new User(3, "Bob", "Johnson", "bob@example.com")
    };

    [HttpGet]
    public IActionResult GetAllUsers()
    {
        return Ok(_users);
    }

    [HttpGet("{id}")]
    public IActionResult GetUserById(int id)
    {
        var user = _users.FirstOrDefault(u => u.Id == id);
        if (user == null) return NotFound();
        return Ok(user);
    }

    [HttpPost]
    public IActionResult CreateUser([FromBody] User newUser)
    {
        newUser.Id = _users.Max(u => u.Id) + 1;
        _users.Add(newUser);
        return Ok(newUser);
    }

    [HttpGet("search")]
    public IActionResult SearchUsers([FromQuery] string term)
    {
        var results = _users.Where(u => 
            u.FirstName.Contains(term, StringComparison.OrdinalIgnoreCase) ||
            u.LastName.Contains(term, StringComparison.OrdinalIgnoreCase) ||
            u.Email.Contains(term, StringComparison.OrdinalIgnoreCase));
        
        return Ok(new { 
            Count = results.Count(),
            Results = results 
        });
    }
}

public record User(int Id, string FirstName, string LastName, string Email);

此控制器演示了使用 Ok 方法的四种不同场景。第一个方法在访问基本路由 /api/users 时返回所有用户。

第二个方法按 ID 检索特定用户。第三个方法显示了在成功的 POST 操作后使用 Ok 返回创建的资源。

第四个方法演示了使用 Ok 返回复杂对象,包括搜索结果和计数。这表明 Ok 如何包装匿名类型。

ApiController 属性启用自动模型验证和其他 Web API 约定。所有方法都返回适当的 HTTP 状态码,其中 Ok 表示成功 (200)。

来源

Microsoft ASP.NET Web API 文档

在本文中,我们探讨了 ASP.NET 8 中的 Ok 方法。这个方便的辅助方法简化了从 Web API 端点返回成功响应的过程。

作者

我叫 Jan Bodnar,我是一名充满热情的程序员,拥有丰富的编程经验。我从 2007 年开始撰写编程文章。到目前为止,我已撰写了 1,400 多篇文章和 8 本电子书。我在编程教学方面拥有十多年的经验。

列出所有 ASP.NET 教程