当前位置:首页 > 行业动态 > 正文

c# web api案例

csharp,using System;,using System.Collections.Generic;,using System.Linq;,using System.Net;,using System.Net.Http;,using System.Web.Http;namespace WebApiExample,{, public class ValuesController : ApiController, {, // GET api/values, public IEnumerable Get(), {, return new string[] { "value1", "value2" };, } // GET api/values/5, public string Get(int id), {, return "value";, } // POST api/values, public void Post([FromBody]string value), {, } // PUT api/values/5, public void Put(int id, [FromBody]string value), {, } // DELETE api/values/5, public void Delete(int id), {, }, },},` 这个简单的Web API包含一个控制器ValuesController`,它提供了基本的CRUD操作。

C# Web API 案例:构建简单的待办事项列表应用

在现代软件开发中,Web API 是一种非常流行的架构风格,用于构建可扩展、易于维护和集成的应用程序,C# 作为一种强大的编程语言,与 ASP.NET Core 结合使用,可以方便地创建高性能的 Web API,以下是一个使用 C# 和 ASP.NET Core 构建简单待办事项列表应用的案例。

一、项目

这个待办事项列表应用允许用户添加、查看、更新和删除待办事项,它提供了一个简洁的 RESTful API,前端应用可以通过该 API 与后端进行交互。

二、开发环境搭建

1、安装 Visual Studio:从官方网站下载并安装 Visual Studio 2022 或更高版本。

2、创建新项目:打开 Visual Studio,选择“创建新项目”,然后选择“ASP.NET Core Web API”项目模板,配置项目名称和保存位置后点击“创建”。

3、选择框架:在项目创建向导中,选择 .NET 版本(建议使用最新的稳定版本),然后点击“创建”。

三、项目结构

项目的基本结构如下:

文件夹 说明
Controllers 包含 API 控制器,处理 HTTP 请求。
Models 定义数据模型,表示待办事项实体。
Services 包含业务逻辑层,处理与待办事项相关的操作。

四、创建数据模型

在 Models 文件夹中创建一个名为TodoItem.cs 的文件,定义待办事项的数据模型:

namespace ToDoListAPI.Models
{
    public class TodoItem
    {
        public int Id { get; set; }
        public string Title { get; set; }
        public bool IsCompleted { get; set; }
    }
}

五、创建服务层

在 Services 文件夹中创建一个名为TodoService.cs 的文件,实现对待办事项的基本操作:

using System.Collections.Generic;
using System.Linq;
using ToDoListAPI.Models;
namespace ToDoListAPI.Services
{
    public class TodoService
    {
        private static List<TodoItem> _todoItems = new List<TodoItem>
        {
            new TodoItem { Id = 1, Title = "Buy groceries", IsCompleted = false },
            new TodoItem { Id = 2, Title = "Read a book", IsCompleted = true }
        };
        private int _nextId = 3;
        public IEnumerable<TodoItem> GetAll()
        {
            return _todoItems;
        }
        public TodoItem GetById(int id)
        {
            return _todoItems.FirstOrDefault(t => t.Id == id);
        }
        public void Add(TodoItem todoItem)
        {
            todoItem.Id = _nextId++;
            _todoItems.Add(todoItem);
        }
        public void Update(TodoItem todoItem)
        {
            var existingItem = GetById(todoItem.Id);
            if (existingItem != null)
            {
                existingItem.Title = todoItem.Title;
                existingItem.IsCompleted = todoItem.IsCompleted;
            }
        }
        public void Delete(int id)
        {
            var todoItem = GetById(id);
            if (todoItem != null)
            {
                _todoItems.Remove(todoItem);
            }
        }
    }
}

六、创建控制器

在 Controllers 文件夹中创建一个名为TodosController.cs 的文件,定义 API 端点:

using Microsoft.AspNetCore.Mvc;
using ToDoListAPI.Models;
using ToDoListAPI.Services;
namespace ToDoListAPI.Controllers
{
    [Route("api/[controller]")]
    [ApiController]
    public class TodosController : ControllerBase
    {
        private readonly TodoService _todoService;
        public TodosController(TodoService todoService)
        {
            _todoService = todoService;
        }
        [HttpGet]
        public ActionResult<IEnumerable<TodoItem>> GetAll()
        {
            return _todoService.GetAll();
        }
        [HttpGet("{id}")]
        public ActionResult<TodoItem> GetById(int id)
        {
            var todoItem = _todoService.GetById(id);
            if (todoItem == null)
            {
                return NotFound();
            }
            return todoItem;
        }
        [HttpPost]
        public ActionResult<TodoItem> Create(TodoItem todoItem)
        {
            _todoService.Add(todoItem);
            return CreatedAtAction(nameof(GetById), new { id = todoItem.Id }, todoItem);
        }
        [HttpPut("{id}")]
        public ActionResult Update(int id, TodoItem todoItem)
        {
            if (id != todoItem.Id)
            {
                return BadRequest();
            }
            _todoService.Update(todoItem);
            return NoContent();
        }
        [HttpDelete("{id}")]
        public ActionResult Delete(int id)
        {
            _todoService.Delete(id);
            return NoContent();
        }
    }
}

七、注册服务

Startup.cs 文件中注册TodoService

public void ConfigureServices(IServiceCollection services)
{
    services.AddControllers();
    services.AddSingleton<TodoService>();
}

八、运行项目

按下 F5 键运行项目,API 将在https://localhost:{port}/api/todos 上可用,可以使用 Postman 或其他 API 测试工具来测试各个端点。

九、示例请求和响应

获取所有待办事项

请求:GET https://localhost:{port}/api/todos

响应

[
    { "id": 1, "title": "Buy groceries", "isCompleted": false },
    { "id": 2, "title": "Read a book", "isCompleted": true }
]

获取单个待办事项

请求:GET https://localhost:{port}/api/todos/1

响应

{ "id": 1, "title": "Buy groceries", "isCompleted": false }

添加新待办事项

请求:POST https://localhost:{port}/api/todos

请求体{ "title": "Write an article" }

响应201 Created,响应体中包含新创建的待办事项信息。

更新待办事项

请求:PUT https://localhost:{port}/api/todos/1

请求体{ "title": "Buy fruits", "isCompleted": true }

响应204 No Content

删除待办事项

请求:DELETE https://localhost:{port}/api/todos/1

响应204 No Content

十、FAQs

Q1:如何部署这个 Web API?

A1:可以将项目发布到 IIS、Nginx 或其他 Web 服务器上,也可以使用云服务提供商(如 Azure、AWS 等)进行部署,具体的部署步骤取决于所选的部署环境和平台。

Q2:如何对 API 进行身份验证和授权?

A2:可以使用多种方式来实现身份验证和授权,JWT(JSON Web Token)、OAuth 等,以下是一个简单的使用 JWT 进行身份验证的示例:安装Microsoft.AspNetCore.Authentication.JwtBearer NuGet 包,然后在Startup.cs 中配置 JWT 身份验证中间件,在控制器中使用[Authorize] 属性来保护端点,客户端需要在请求头中携带有效的 JWT 令牌才能访问受保护的资源,具体的实现细节可以根据实际需求进行调整和完善。

十一、小编有话说

通过这个简单的待办事项列表应用案例,我们展示了如何使用 C# 和 ASP.NET Core 构建一个基本的 Web API,在实际项目中,可能还需要考虑更多的因素,如数据库集成、错误处理、输入验证等,希望这个案例能够帮助你快速上手 C# Web API 开发,并为构建更复杂的应用程序打下基础。

0