net core体系-API-Restful+Swagger搭建API
本篇主要简单介绍下.net core下搭建WebApi
项目结构
项目结构其实不用多说,基本上大同小异。
- Controller:对外暴露的契约
- Business/IBussiness:业务逻辑层实现及接口
- DataAccess:数据访问层
- Model:实体类库
- Common:公共方法类库
Swagger
Swagger 是一款RESTFUL接口的文档在线自动生成+功能测试功能软件。本文简单介绍了在项目中集成swagger的方法和一些常见问题。如果想深入分析项目源码,了解更多内容,见参考资料。
Swagger 是一个规范和完整的框架,用于生成、描述、调用和可视化 RESTful 风格的 Web 服务。总体目标是使客户端和文件系统作为服务器以同样的速度来更新。文件的方法,参数和模型紧密集成到服务器端的代码,允许API来始终保持同步。Swagger 让部署管理和使用功能强大的API从未如此简单。
官网:http://swagger.io/
Swagger集成
首先通过NuGet
加载依赖包Swashbuckle.AspNetCore
然后右击你的项目,在属性
中,勾选下生成XML文档文件,Swagger会自动解析对应的XML进行匹配。
然后开始编码部分,在Startup.cs
中ConfigureServices
f方法下加入下面的代码:
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");
});
配置到这里,可以直接运行看下效果了,结果运行后发现报错如下:
那是因为主项目没有引用Model
这个类库,导致在主项目的debug
中没有生产对应的xml
,引用下,重新生产再次运行,输入/swagger
就能看到对应的效果了。
记得项目接入的时候才1.0.0
的版本,如今2.3.0
的版本样式也变了很多了。
这样我可以启动默认页设为/swagger
,右击docker-compose
修改对应的url
:
代码编写
逻辑代码不多说,基本没什么区别,大多数常用的属性和方法.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还是比较方便的,大家可以试试。
其他资源:
https://blog.csdn.net/boonya/article/details/80321229
https://blog.csdn.net/xiaouncle/article/details/83995809
https://blog.csdn.net/sinat_16998945/article/details/84307028
net core体系-API-Restful+Swagger搭建API的更多相关文章
- Asp.Net Core Web Api 使用 Swagger 生成 api 说明文档
最近使用 Asp.Net Core Web Api 开发项目服务端.Swagger 是最受欢迎的 REST APIs 文档生成工具之一,进入我的视野.以下为学习应用情况的整理. 一.Swagger 介 ...
- AspNet Core Api Restful +Swagger 发布IIS 实现微服务之旅 (二)
上一步我们创建好CoreApi 接下来在框架中加入 Swagger 并发布 到 IIS (1)首先点击依赖项>管理Nuget包 (2)输入 Swashbuckle.aspnetCore 比 ...
- AspNet Core Api Restful +Swagger 发布IIS
上一步我们创建好CoreApi 接下来在框架中加入 Swagger 并发布 到 IIS (1)首先点击依赖项>管理Nuget包 (2)输入 Swashbuckle.aspnetCore 比 ...
- AspNet Core Api Restful +Swagger 实现微服务之旅 (三)
(1) 访问Rest ful接口时 Token验证 返回数据格式封装 (一)访问时Token验证 返回数据格式封装 1.1访问Api接口 方法 实现 1.1.1 创建访问Rest ...
- AspNet Core Api Restful +Swagger 实现微服务之旅(四)
这几天没更新,项目框架也是在发展阶段,这几天学习配置了一遍Apollo和RabbitMQ 等到放到框架上之后我整理一下到时候把心得写出来相互学习. 接着上一篇的内容 (2) 程序错误时 返回数据格 ...
- ASP.NET Core WebApi使用Swagger生成api说明文档看这篇就够了
引言 在使用asp.net core 进行api开发完成后,书写api说明文档对于程序员来说想必是件很痛苦的事情吧,但文档又必须写,而且文档的格式如果没有具体要求的话,最终完成的文档则完全取决于开发者 ...
- ASP.NET Core WebApi使用Swagger生成api
引言 在使用asp.net core 进行api开发完成后,书写api说明文档对于程序员来说想必是件很痛苦的事情吧,但文档又必须写,而且文档的格式如果没有具体要求的话,最终完成的文档则完全取决于开发者 ...
- 【转】ASP.NET Core WebApi使用Swagger生成api说明文档看这篇就够了
原文链接:https://www.cnblogs.com/yilezhu/p/9241261.html 引言 在使用asp.net core 进行api开发完成后,书写api说明文档对于程序员来说想必 ...
- .NET Core WebApi帮助文档使用Swagger生成Api说明文档
Swagger也称为Open API,Swagger从API文档中手动完成工作,并提供一系列用于生成,可视化和维护API文档的解决方案.简单的说就是一款让你更好的书写API文档的框架. 我们为什么选择 ...
随机推荐
- Linux-监控目录及文件
Linux-通过inotifywait监控目录及文件 inotifywait命令的使用此处就不写了:可以参考文章:https://www.cnblogs.com/martinzhang/p/41269 ...
- 为 Java 程序员准备的 Go 入门 PPT
为 Java 程序员准备的 Go 入门 PPT 这是 Google 的 Go 团队技术主管经理 Sameer Ajmani 分享的 PPT,为 Java 程序员快速入门 Go 而准备的. 视频 这个 ...
- (转)Java8内存模型—永久代(PermGen)和元空间(Metaspace)
背景:介绍java8中永久代到元空间的转变. Java8内存模型—永久代(PermGen)和元空间(Metaspace) 一.JVM 内存模型 根据 JVM 规范,JVM 内存共分为虚拟机栈.堆.方法 ...
- CF1059D Nature Reserve
原题链接 网络不好的可以到洛谷上去QwQ 题目大意 有N个点,求与y=0相切的,包含这N个点的最小圆的半径 输入输出样例 输入: 2 0 1 1 1 输出 0.625 感觉最多是蓝题难度? 首先无解的 ...
- 我眼里K-Means算法
在我眼里一切都是那么简单,复杂的我也看不懂,最讨厌那些复杂的人际关系,唉,像孩子一样交流不好吗. 学习K-Means算法时,会让我想起三国志这个游戏,界面是一张中国地图,诸侯分立,各自为据.但是游戏开 ...
- Java转换流、缓冲流、流操作规律整理
转换流 1.1 OutputStreamWriter类 OutputStreamWriter 是字符流通向字节流的桥梁:可使用指定的字符编码表,将要写入流中的字符编码成字 ...
- consul kv使用介绍
有两种方法与Consul K/V交互的方式 HTTP API Consul KV CLI WEB访问 命令行使用 帮助命令:consul kv --help 列出所有kv:consul kv get ...
- windows下搭建vue开发环境+IIS部署
原创]win10下搭建vue开发环境 https://www.cnblogs.com/ixxonline/p/6007885.html 特别说明:下面任何命令都是在windows的命令行工具下进行输 ...
- [Android] Android RxJava2+Retrofit2+OkHttp3 的使用(一) --基础篇 Retrofit2 的使用
本文是 Android RxJava2+Retrofit2+OkHttp3 的使用(一) --基础篇 Retrofit2 的使用 本文的目标是用 Retrofit写一个网络请求: 本文以从获取天气预报 ...
- mysql普通用户本机无法登录的解决办法
背景 mysql和mariadb的用户表里存在匿名用户时,普通用户出现无法登录的情况 分析 先查看下用户表 mysql> select user, host, password from mys ...