dotnet-api-模板
英文 | 葡萄牙语
一个.Net 8.0
WebApi样板/模板项目。已实现MediatR、Swagger、AutoMapper Mapster、Serilog等。
本项目的目标是为您的.Net WebApi提供一个快速启动,实现.net中RESTful API最常用的模式和技术,使您的工作更轻松。
如何运行
- 使用此模板(github)或克隆/下载到您的本地工作区。
- 下载最新的.Net SDK和Visual Studio/Code/Rider。
独立运行
- 您可能需要一个运行中的Postgres实例,并初始化适当的迁移。
- 您可以仅在docker上运行数据库。为此,运行以下命令:
docker-compose up -d db-server
。这样,应用程序就能够访问数据库服务器的容器。
- 您可以仅在docker上运行数据库。为此,运行以下命令:
- 进入src/Boilerplate.Api文件夹并运行
dotnet run
,或者在Visual Studio中将api项目设置为启动项目,并以控制台/docker/IIS方式运行。 - 访问http://localhost:7122/api-docs或https://localhost:7123/api-docs以访问应用程序的swagger。
Docker
- 在根目录运行
docker-compose up -d
,或者在Visual Studio中,将docker-compose项目设置为启动项目并运行。这应该会启动应用程序和数据库。
-
- 对于docker-compose,您应该在根文件夹中运行此命令:
dotnet dev-certs https -ep https/aspnetapp.pfx -p yourpassword
在此命令和docker-compose.override.yml文件中将"yourpassword"替换为其他内容。 这将创建https证书。
- 对于docker-compose,您应该在根文件夹中运行此命令:
运行测试
重要:您需要启动并运行docker。集成测试将启动一个Postgres容器并使用它来测试API。
在根文件夹中,运行dotnet test
。此命令将尝试查找与sln文件关联的所有测试项目。
如果您使用Visual Studio,还可以访问"测试"菜单并打开"测试资源管理器",在那里您可以查看所有测试并运行所有测试或特定测试。
身份验证
在此项目中,某些路由需要身份验证/授权。为此,您需要使用api/identity/register
路由创建一个账户。
之后,您可以使用/api/identity/login
进行登录,无需使用cookie,然后在锁定(如果使用swagger)或通过http请求的Authorization头使用收到的accessToken。
有关更多信息,请查看swagger文档。
本项目包含:
- SwaggerUI
- EntityFramework
- Postgres
- 最小API
- 强类型ID
- 测试覆盖率收集
AutoMapperMapster- MediatR
- 特性切片
- Serilog,带请求日志记录和易于配置的接收器
- .Net依赖注入
- 资源过滤
- 响应压缩
- 响应分页
- CI(Github Actions)
- 身份验证
- 授权
- 单元测试
- 使用testcontainers的集成测试
- 使用docker和docker-compose的容器支持
- OpenTelemetry支持(默认使用OLTP导出器)
- NuGet中央包管理(CPM)
项目结构
- Services
- 此文件夹存储您的API和向用户发送数据的任何项目。
- Boilerplate.Api
- 这是主要的API项目。这里包含所有将使用的控制器和API初始化。
- docker-compose
- 此项目的存在是为了允许您使用Visual Studio运行docker-compose。它包含对docker-compose文件的引用,并将构建所有项目依赖项并运行它。
- Application
- 此文件夹存储API和领域层之间的所有数据转换。它还包含您的业务逻辑。
- Auth
- 此文件夹包含登录会话实现。
- Domain
- 此文件夹包含您的业务模型、枚举和通用接口。
- Boilerplate.Domain
- 包含业务模型和枚举。
- Auth
- 此文件夹包含登录会话接口。
- Infra
- 此文件夹包含所有数据访问配置、数据库上下文、任何访问外部数据的内容。
- Boilerplate.Infrastructure
- 此项目包含dbcontext、实体配置和迁移。
适应您的项目
- 根据您的需求删除/重命名所有与英雄相关的内容。
- 根据您的用途重命名解决方案、项目、命名空间和规则集。
- 根据您的新csproj/文件夹名称更改dockerfile和docker-compose.yml。
- 给这个仓库一个星星!
迁移
要在此项目上运行迁移,您需要dotnet-ef工具。
- 运行
dotnet tool install --global dotnet-ef
- 现在,根据您的操作系统,有不同的命令:
- 对于Windows:
dotnet ef migrations add InitialCreate --startup-project .\src\Boilerplate.Api\ --project .\src\Boilerplate.Infrastructure\
- 对于Linux/Mac:
dotnet ef migrations add InitialCreate --startup-project ./src/Boilerplate.Api/ --project ./src/Boilerplate.Infrastructure/
- 对于Windows:
如果您喜欢,请给它一个星星
如果这个模板对您有用,或者您从中学到了什么,请给它一个星星!:star:
感谢
关于
这个样板/模板由Yan Pitangui在MIT许可下开发。