.Net8使用Cli命令创建基础项目

第一步:创建项目结构# 创建解决方案

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
dotnet add Fx.Application/Fx.Application.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

 

posted @ 2024-09-28 16:49  eqy  阅读(129)  评论(0)    收藏  举报