c# web api案例
- 行业动态
- 2025-03-01
- 1
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 开发,并为构建更复杂的应用程序打下基础。