本项目是Web API项目,遵循RESTFul API对外提供接口能力,与普通的ASP.NET Core
项目没什么区别。
项目文件与ASP.NET Core
项目没什么不同,默认了集成前端的功能,打包时可将前端打包后的内容添加到wwwroot
下,使前后端使用一个服务。
如果你不需要,可以删除
<SpaRoot>ClientApp\</SpaRoot> <SpaProxyServerUrl>https://localhost:14200</SpaProxyServerUrl>
以及
<ItemGroup> <PackageReference Include="Microsoft.AspNetCore.SpaProxy" Version="7.0.5" /> </ItemGroup>
Program是ASP.NET Core
中极其重要的入口类,在这里我们需要完成配置
,服务注入
,中间件
等各类准备工作。
本模板默认配置了以下内容:
PostgreSQL
app.UseExceptionHandler
CustomBadRequest
InitDataTask
同时添加了扩展服务注册方法来简化服务注册:
AddAppComponents
,注入应用组件服务,如数据库/缓存/日志等,该方法在Application\ServiceExtension.cs
。AddWebComponents
,注入Web组件服务,如身份认证/swagger/cors/健康检查等,该方法在Http.API\Infrastructure\ServiceExtension.cs
以上服务配置内容可通过修改appsettings.json
中的配置进行修改,如有必要也可直接修改代码。
以下代码是提供数据仓储及业务逻辑服务的注入:
// 3 数据及业务接口注入 services.AddHttpContextAccessor(); services.AddTransient<IUserContext, UserContext>(); services.AddDataStore(); services.AddManager();
基类提供了对Swagger
的支持,定义了基本路由,覆写了部分响应对象,
你可以在Infrastructure\RestControllerBase.cs
中查看。
集成前端Angular
项目,如果不需要,可直接删除。
自定义中间件实现
EF Core 生成的迁移文件
定义后台任务服务
整体使用RESTful风格,优先使用ASP.NET Core
框架本身提供的功能。
返回以HTTP状态码为准。
错误返回的格式如下:
{ "title": "", "status": 500, "detail": "未知的错误!", "traceId": "00-d768e1472decd92538cdf0a2120c6a31-a9d7310446ea4a3f-00" }
// 修改信息 [HttpPut("{id}")] public async Task<ActionResult<TEntity?>> UpdateAsync([FromRoute] Guid id, TUpdate form)
Note
不建议在接口方法中使用[Route()]
来定义方法的路由,请使用更直观和明确的HTTP谓词方式。
// 如果错误,使用Problem返回内容 return Problem("未知的错误!", title: "业务错误");
// 如果不存在,返回404 return NotFound("用户名密码不存在");
Note
不建议使用统一的自定义返回模型,请优先使用HTTP状态码表达返回的含义。 如需要自定义错误码,也可通过添加模型字段,而不是使用统一的返回类型。