在开始之前,确保你的开发环境中安装了以下工具:
Visual Studio 2022 或更高版本(推荐使用 Community 版)
.NET SDK 6.0 或更高版本
Postman(用于测试 API)
打开 Visual Studio,选择“Create a new project”。
选择“ASP.NET Core Web API”模板。
配置项目名称和保存位置。
确保选择 .NET 6.0 或更高版本作为目标框架。
点击“Create”。
在Models
文件夹中创建一个新的类文件,例如Product.cs
,定义你的数据模型。
namespace YourNamespace.Models { public class Product { public int Id { get; set; } public string Name { get; set; } public decimal Price { get; set; } public string Description { get; set; } } }
在Controllers
文件夹中添加一个新的控制器,例如ProductsController.cs
。
using Microsoft.AspNetCore.Mvc; using System.Collections.Generic; using System.Linq; using YourNamespace.Models; namespace YourNamespace.Controllers { [Route("api/[controller]")] [ApiController] public class ProductsController : ControllerBase { private static List<Product> products = new List<Product> { new Product { Id = 1, Name = "Product A", Price = 10.99m, Description = "Description A" }, new Product { Id = 2, Name = "Product B", Price = 20.99m, Description = "Description B" } }; [HttpGet] public ActionResult<IEnumerable<Product>> GetAllProducts() { return products; } [HttpGet("{id}")] public ActionResult<Product> GetProduct(int id) { var product = products.FirstOrDefault(p => p.Id == id); if (product == null) { return NotFound(); } return product; } [HttpPost] public ActionResult<Product> CreateProduct(Product product) { products.Add(product); return CreatedAtAction(nameof(GetProduct), new { id = product.Id }, product); } [HttpPut("{id}")] public IActionResult UpdateProduct(int id, Product product) { var existingProduct = products.FirstOrDefault(p => p.Id == id); if (existingProduct == null) { return NotFound(); } existingProduct.Name = product.Name; existingProduct.Price = product.Price; existingProduct.Description = product.Description; return NoContent(); } [HttpDelete("{id}")] public IActionResult DeleteProduct(int id) { var product = products.FirstOrDefault(p => p.Id == id); if (product == null) { return NotFound(); } products.Remove(product); return NoContent(); } } }
按下 F5 键运行应用程序,默认情况下,应用将启动并监听https://localhost:5001
,你可以使用 Postman 或其他 HTTP 客户端来测试你的 API。
以下是一些示例请求及其响应:
获取所有产品:GET https://localhost:5001/api/products
获取特定产品:GET https://localhost:5001/api/products/1
创建新产品:POST https://localhost:5001/api/products
,请求体为 JSON,例如{"name":"New Product","price":15.99,"description":"New Description"}
更新产品:PUT https://localhost:5001/api/products/1
,请求体为 JSON,例如{"name":"Updated Product","price":18.99,"description":"Updated Description"}
删除产品:DELETE https://localhost:5001/api/products/1
Q1: 如果我希望将数据存储在数据库中而不是内存中,该怎么办?
A1: 你可以使用 Entity Framework Core 来实现与数据库的交互,安装必要的 NuGet 包(如Microsoft.EntityFrameworkCore
和数据库特定的包,如Npgsql.EntityFrameworkCore.PostgreSQL
),创建一个DbContext
派生类来表示你的数据库上下文,并在其中定义 DbSet 属性以映射到你的模型,修改控制器中的代码以使用数据库操作代替内存列表操作。
Q2: 如何对 API 进行身份验证和授权?
A2: 你可以使用 JWT(JSON Web Token)来处理身份验证和授权,安装Microsoft.Identity.Web
和System.IdentityModel.Tokens.Jwt
等 NuGet 包,在你的 API 中实现一个中间件来验证传入的 JWT,你还需要实现登录逻辑来生成和颁发 JWT,你可以使用[Authorize]
特性来保护特定的控制器或方法。