零基础ASP.NET Core WebAPI团队协作开发 (3)

 

零基础ASP.NET Core WebAPI团队协作开发

3

 

零基础ASP.NET Core WebAPI团队协作开发

4

 

Demo使用的是vs2019Asp.net core 2.1

 

注意:如果一个模块里面接口比较多,一个解决方案里面不适合团队开发。所以对这种接口功能比较多,拆成各个插件方便团队开发,最后发布的时候合并到一起。但是如果这个模块接口不是很多,就没必要过度设计为了插件化而拆开。

 

每个独立开发的都是vs里面建立的标准ASP.NET Core WebAPI项目,这里主项目和各个插件项目没有从属关系,完全平等API项目开发,最后只是可以汇合到主项目作为一个站点发布交付。各自独立调试运行各自开发功能模块,测试没问题发布汇总到主项目,部署运行,之后哪个接口问题只需要找到对应的模块修改,完全隔离开,不用担心修改会影响其他正常使用的模块。

 

 

主项目解决方案结构,如图5

 

零基础ASP.NET Core WebAPI团队协作开发

5

 

v1v2里面的是有版本控制的,放在外面的就不需要版本控制。

还有Extensions文件夹里面两个类也是为了版本的显示做处理,具体看Startup.cs里面代码,如图6

 

零基础ASP.NET Core WebAPI团队协作开发

6

 

搭建好之后,主项目运行,选择v1版本显示如图7

 

零基础ASP.NET Core WebAPI团队协作开发

7

 

如果选择v2,显示如图8

 

零基础ASP.NET Core WebAPI团队协作开发

8

 

通过上面两个切换,应该看到不管选择v1还是v2下面不受版本控制的都会显示。

 

 

如果把图4的代码注释掉,看下运行效果,如图9

 

 

零基础ASP.NET Core WebAPI团队协作开发

9

显示就这样,不能根据swagger选择,直观的显示是v1还是v2。这个就是RemoveVersionFromParameterReplaceVersionWithExactValueInPath两个类的作用。

 这两个类的代码如下

public class RemoveVersionFromParameter : IOperationFilter { public void Apply(Operation operation, OperationFilterContext context) { if (operation.Parameters.Count > 0) { var versionParameter = operation.Parameters.FirstOrDefault(p => p.Name == "version"); operation.Parameters.Remove(versionParameter); } } } public class ReplaceVersionWithExactValueInPath : IDocumentFilter { public void Apply(SwaggerDocument swaggerDoc, DocumentFilterContext context) { swaggerDoc.Paths = swaggerDoc.Paths .ToDictionary( path => path.Key.Replace("v{version}", swaggerDoc.Info.Version), path => path.Value ); } }

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zywgfd.html