在上一篇
[.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还是比较方便的,大家可以试试。
领取专属 10元无门槛券
私享最新 技术干货