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

在上一篇

[.net core项目实战之开发环境搭建]

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

项目结构

项目结构其实不用多说,基本上大同小异。

Controller:对外暴露的契约

Business/IBussiness:业务逻辑层实现及接口

DataAccess:数据访问层

Model:实体类库

Common:公共方法类库

Swagger集成

首先通过加载依赖包

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

然后开始编码部分,在中f方法下加入下面的代码:

services.AddSwaggerGen(c=>

{

c.SwaggerDoc("v1",newInfo { Title ="My API", Version ="v1"});

varbasePath = PlatformServices.Default.Application.ApplicationBasePath;

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

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

c.IncludeXmlComments(xmlPath);

c.IncludeXmlComments(xmlPath1);

});

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

在方法中加入下面代码:

app.UseSwagger();

app.UseSwaggerUI(c=>{

c.SwaggerEndpoint("/swagger/v1/swagger.json","我的API V1");

});

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

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

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

这样我可以启动默认页设为,右击修改对应的:

代码编写

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

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

可以简单看个例子:

//Dal层:

publicstaticasyncTaskDelete(longid)

{

varresult =newResponseResult();

try

{

using(varconn = DatabaseManager.GetConnection(DatabaseManager.DBName))

{

awaitconn.OpenAsync();

stringsql =$@"DELETE FROM USER WHERE Id=@Id";

awaitconn.ExecuteAsync(sql,new{ Id = id, UpdateTime = DateTime.Now });

}

}

catch(Exception ex)

{

//记录日志

returnnewResponseResult { Result =false, Code = ResponseCode.UnknownException, ErrorMessage = ex.Message };

}

returnresult;

}

//BLL层

publicstaticasyncTaskDelete(longid)

{

if(id

returnnewResponseResult { Result =false, ErrorMessage ="未传入主键或主键非法", Code = ResponseCode.NeedsKeyParameter };

returnawaitUserDataAccess.Delete(id);

}

//Controller

[HttpDelete("")]

publicasyncTaskDelete(longid)

{

returnAssertNotFound(awaitUserService.Delete(id));

}

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

总结

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

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20180320A1N8KP00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 yunjia_community@tencent.com 删除。

扫码关注云+社区

领取腾讯云代金券