第一步:创建项目结构
# 创建解决方案 dotnet new sln -n Fx cd Fx # 创建 Web API 层 dotnet new webapi -n Fx.WebApi # 创建 Application 层 dotnet new classlib -n Fx.Application # 创建 Domain 层 dotnet new classlib -n Fx.Domain # 创建 Infrastructure 层 dotnet new classlib -n Fx.Infrastructure # 将项目添加到解决方案中 dotnet sln add Fx.WebApi/Fx.WebApi.csproj dotnet sln add Fx.Application/Fx.Application.csproj dotnet sln add Fx.Domain/Fx.Domain.csproj dotnet sln add Fx.Infrastructure/Fx.Infrastructure.csproj # 设置项目引用 dotnet add Fx.WebApi/Fx.WebApi.csproj reference Fx.Application/Fx.Application.csproj dotnet add Fx.Application/Fx.Application.csproj reference Fx.Domain/Fx.Domain.csproj dotnet add Fx.WebApi/Fx.WebApi.csproj reference Fx.Infrastructure/Fx.Infrastructure.csproj
第二步:定义 Domain 层 (实体类)
在 Fx.Domain
项目中定义实体类,例如 Order
实体:
namespace Fx.Domain.Entities { // 订单实体类,表示订单的基本信息 public class Order { public int Id { get; set; } // 订单ID public string ProductName { get; set; } // 产品名称 public decimal Price { get; set; } // 价格 } }
第三步:定义 Application 层 (服务和接口)
在 Fx.Application
项目中定义接口和服务实现。
IOrderService.cs (接口定义):
namespace Fx.Application.Interfaces { // 订单服务接口,定义获取和添加订单的操作 public interface IOrderService { Task<IEnumerable<Order>> GetOrders(); // 获取所有订单 Task<Order> GetOrderById(int id); // 通过ID获取订单 Task AddOrder(Order order); // 添加新订单 } }
OrderService.cs (接口实现):
using Fx.Application.Interfaces; using Fx.Domain.Entities; namespace Fx.Application.Services { // 订单服务实现类 public class OrderService : IOrderService { private readonly List<Order> _orders = new(); // 模拟订单数据的列表 // 获取所有订单 public Task<IEnumerable<Order>> GetOrders() => Task.FromResult(_orders.AsEnumerable()); // 根据ID获取单个订单 public Task<Order> GetOrderById(int id) => Task.FromResult(_orders.FirstOrDefault(o => o.Id == id)); // 添加新订单 public Task AddOrder(Order order) { _orders.Add(order); return Task.CompletedTask; } } }
第四步:设置 Infrastructure 层
基础设施层无需修改,可以保持一致(例如数据库或存储服务的配置)。
第五步:实现 API 层 (Web API 控制器)
在 Fx.WebApi
项目中创建控制器,处理订单相关的API请求。
OrdersController.cs:
using Fx.Application.Interfaces; using Fx.Domain.Entities; using Microsoft.AspNetCore.Mvc; namespace Fx.WebApi.Controllers { [Route("api/[controller]")] [ApiController] // 订单控制器,处理订单相关的API请求 public class OrdersController : ControllerBase { private readonly IOrderService _orderService; // 构造函数注入订单服务 public OrdersController(IOrderService orderService) { _orderService = orderService; } // GET: api/orders [HttpGet] public async Task<IActionResult> GetOrders() { // 获取所有订单 var orders = await _orderService.GetOrders(); return Ok(orders); } // GET: api/orders/{id} [HttpGet("{id}")] public async Task<IActionResult> GetOrder(int id) { // 根据ID获取订单 var order = await _orderService.GetOrderById(id); if (order == null) return NotFound(); return Ok(order); } // POST: api/orders [HttpPost] public async Task<IActionResult> AddOrder([FromBody] Order order) { // 添加新订单 await _orderService.AddOrder(order); return CreatedAtAction(nameof(GetOrder), new { id = order.Id }, order); } } }
第六步:在 Program.cs
中配置依赖注入
在 Program.cs 中注册服务,配置依赖注入:
using Fx.Application.Interfaces; using Fx.Application.Services; var builder = WebApplication.CreateBuilder(args); // 注册订单服务到DI容器中 builder.Services.AddScoped<IOrderService, OrderService>(); builder.Services.AddControllers(); var app = builder.Build(); // 配置HTTP请求管道 app.UseHttpsRedirection(); app.UseAuthorization(); app.MapControllers(); app.Run();
第七步:运行应用程序
使用以下命令运行应用程序:
dotnet run --project Fx.WebApi
标签:Task,Cli,订单,Fx,创建,Application,Net8,dotnet,public From: https://www.cnblogs.com/eqycc/p/18438133