.net core项目实战之基于Restful API+Swagger项目搭建

.NET Core WebAPI实战
本文详细介绍如何在.NET Core环境下搭建WebAPI项目,并集成Swagger生成API文档。从项目结构设计到具体编码实践,包括异步编程技巧等进行了全面阐述。

在上一篇[.net core项目实战之开发环境搭建]主要介绍了项目开发环境的搭建,本篇主要简单介绍下 .net core下搭建WebApi及集成Swagger,同时介绍一些自己编程时的一些习惯。

项目结构

项目结构其实不用多说,基本上大同小异。
- Controller:对外暴露的契约
- Business/IBussiness:业务逻辑层实现及接口
- DataAccess:数据访问层
- Model:实体类库
- Common:公共方法类库

图1

Swagger集成

首先通过NuGet加载依赖包Swashbuckle.AspNetCore

图2

然后右击你的项目,在属性中,勾选下生成XML文档文件,Swagger会自动解析对应的XML进行匹配。

图3

然后开始编码部分,在Startup.csConfigureServicesf方法下加入下面的代码:

services.AddSwaggerGen(c =>
 {
    c.SwaggerDoc("v1", new Info { Title = "My API", Version = "v1" });

    var basePath = PlatformServices.Default.Application.ApplicationBasePath;

    var xmlPath = Path.Combine(basePath, "MyDemo.xml");

    var xmlPath1 = Path.Combine(basePath, "MyDemo.Model.xml");

    c.IncludeXmlComments(xmlPath);
    c.IncludeXmlComments(xmlPath1);
});

这里我将Model层的Xml也加载了,这样在api文档上也能显示对应字段的描述。

Configure 方法中加入下面代码:

    app.UseSwagger();
    app.UseSwaggerUI(c=>{
        c.SwaggerEndpoint("/swagger/v1/swagger.json", "我的API V1");
    });

配置到这里,可以直接运行看下效果了,结果运行后发现报错如下:

图4

那是因为主项目没有引用Model这个类库,导致在主项目的debug中没有生产对应的xml,引用下,重新生产再次运行,输入/swagger就能看到对应的效果了。

记得项目接入的时候才1.0.0的版本,如今2.3.0的版本样式也变了很多了。

图5

这样我可以启动默认页设为/swagger,右击docker-compose修改对应的url:

图6

代码编写

逻辑代码不多说,基本没什么区别,大多数常用的属性和方法.net core基本都支持,放心大胆的写吧。

这里推荐使用异步编程await,async,但要注意的是,一定要异步到底,避免阻塞。

可以简单看个例子:

//Dal层:
public static async Task<ResponseResult> Delete(long id)
{
    var result = new ResponseResult();
    try
    {
        using (var conn = DatabaseManager.GetConnection(DatabaseManager.DBName))
        {
            await conn.OpenAsync();
            string sql = $@"DELETE FROM USER  WHERE Id=@Id";
            await conn.ExecuteAsync(sql, new { Id = id, UpdateTime = DateTime.Now });
        }
    }
    catch (Exception ex)
    {
        //记录日志
        return new ResponseResult { Result = false, Code = ResponseCode.UnknownException, ErrorMessage = ex.Message };
    }
    return result;
}
//BLL层
public static async Task<ResponseResult> Delete(long id)
{
    if (id <= 0)
        return new ResponseResult { Result = false, ErrorMessage = "未传入主键或主键非法", Code = ResponseCode.NeedsKeyParameter };
        return await UserDataAccess.Delete(id);
}
//Controller
[HttpDelete("{id}")]
public async Task<IActionResult> Delete(long id)
{
    return AssertNotFound(await UserService.Delete(id));
}

由于是演示,这里用的静态类和静态方法,也省去了Interface,实际项目中可以根据需要选择最合适的。

总结

.net core开发web api还是比较方便的,大家可以试试。

### .NET Core 实战教程和项目示例 #### 创建并配置 ASP.NET Core Web 应用 在学习 .NET Core 的过程中,创建一个简单的 ASP.NET Core Web 应用是一个很好的起点。这不仅涵盖了基础的知识点,还涉及到了实际项目的构建过程[^1]。 ```csharp var builder = WebApplication.CreateBuilder(args); // Add services to the container. builder.Services.AddControllersWithViews(); var app = builder.Build(); if (!app.Environment.IsDevelopment()) { app.UseExceptionHandler("/Home/Error"); } app.UseStaticFiles(); app.UseRouting(); app.UseAuthorization(); app.MapControllerRoute( name: "default", pattern: "{controller=Home}/{action=Index}/{id?}"); app.Run(); ``` 这段代码展示了如何设置基本的服务集合,并定义路由规则来处理 HTTP 请求。对于初学者来说,理解这些概念至关重要。 #### Linux 环境下的部署指南 除了 Windows 平台上的 IIS 部署方式外,在 Linux 中利用 Nginx 和 Supervisor 来托管 ASP.NET Core 应用也是一种常见的做法。这种方式提供了更高的灵活性和支持跨平台的能力[^2]。 - **安装必要的组件**:包括 .NET Core SDK/Runtime、Nginx 及 SQL Server 数据库引擎。 - **配置反向代理服务器 (Nginx)** :使外部请求能够被正确转发给 Kestrel 服务器。 - **使用 Supervisord 进程管理器** :确保应用程序即使遇到错误也能自动重启恢复运行状态。 #### ML.NET 整合案例研究 另一个有趣的领域是在 ASP.NET Core 或 WPF 桌面应用中加入机器学习功能。例如,可以尝试实现图像识别或自然语言处理等功能。这里提到的一个具体例子是基于 .NET Core 构建的对象检测系统,它允许开发者快速上手 AI 技术的应用开发工作[^3]。 #### 微服务架构设计模式 最后值得一提的是采用微服务体系结构来进行复杂业务逻辑的设计与实施。通过拆分大型单体式应用程序成多个小型独立服务单元的方式,提高了系统的可维护性和扩展性。有一个开源保险销售系统的 POC 版本可供参考学习,该项目正是采用了这种现代化软件工程方法论来组织各个模块之间的协作关系[^4]。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值