这是一个简单的、预配置的 ASP.NET Core 项目,旨在让您在基于三层架构构建 Restful API 方面取得领先。
为了展示其一些功能,该项目附带了一个名为 Plantagoo 的项目管理应用程序的简约且虚构的实现。
就我个人而言,在过去的几个月里,我一直在反复从头开始创建 ASP.NET Core API 项目。尽管众所周知,技术正在迅速变化和改进,但我觉得有必要创建和发布这个项目,以便将来能够共享、参考和构建它。
三层架构,每层使用类库
基于 DI 的异步服务,返回通用响应对象
基于JWT的认证授权
基于 PBKDF2 的哈希
基于中间件的全局错误处理
Restful API 端点,返回 DTO 和 HTTP 状态代码
实现 API 端点的过滤、分页和排序,返回对象列表
API端点版本控制的实现
通过 POCO 实体进行基于 Entity Framework Core 的数据访问
基于AutoMapper的对象到对象映射和数据库查询优化
通过基于环境的“appsettings.json”文件、机密和/或环境变量,对数据库连接字符串和 JWT 参数进行以安全为中心的可配置性
基于 xUnit 的集成测试,包括专用数据库的设置、播种和拆卸
要按原样启动并运行该项目,请随意执行以下步骤:
.NET Core 3.1+ SDK
IDE(最好是 Visual Studio 或 Visual Studio Code)
MySQL 服务器 8.0.20+
克隆这个存储库
在根目录中,通过运行以下命令恢复所需的包:
dotnet restore
打开 Plantagoo.API 项目中的appsettings.{environment}.json
文件,根据您的需要自定义以下连接字符串(有关凭据,请参阅步骤 7):
server=localhost;Port=3306;database=apiSkeletonDb
出于开发目的,通过运行启用秘密存储(如果您习惯使用环境变量,请快进到步骤 7):
dotnet user-secrets init
如果您使用的是 Windows,请转到并打开%APPDATA%MicrosoftUserSecrets<user_secrets_id>secrets.json
文件。
如果您使用的是 Linux/macOS,请转到并打开~/.microsoft/usersecrets/<user_secrets_id>/secrets.json
文件。
在此 Secrets.json 文件中,添加以下行来设置 JWT 参数并通过添加用户名和密码来扩展数据库连接字符串:
"TokenSettings:Secret": "…", "TokenSettings:AccessExpirationInMinutes": "…", "DB:Username": "…", "DB:Password": "…"
对于创建数据库的代码优先方法,请运行以下命令(确保当前目录是Plantagoo.Data
):
dotnet ef migrations add InitialCreate
其次是:
dotnet ef database update
接下来,通过运行以下命令构建解决方案:
dotnet build
完成后,通过运行以下命令启动应用程序:
dotnet run
在浏览器中启动 https://localhost:5001/swagger/index.html 以查看 API 的 Swagger 文档
.NET核心3.1
ASP.NET 核心 3.1
实体框架核心 3.1
自动映射器
虚张声势
x单位