.net WebApi中使用swagger生成WepApi集成测试工具
2017-02-05 21:43
330 查看
我在WebApi中使用swagger的时候发现会出现很多问题,搜索很多地方都没找到完全解决问题的方法,后面自己解决了,希望对于遇到同样问题朋友有帮助。我将先一步一步的演示项目中解决swagger遇到问题及解决方法。
首先我们新建一个api项目
图1 (默认生成项目)
图2(运行首页)
图3(默认Api列表)
图4(默认Get的Api)
以上图1-4都是默认情况下生成页面看起来不是那么好看,而且测试也不方便,下面将介绍怎么使用swagger。
使用nuget包获取Swashbule、swagger的包并安装。
图5(Swashbule - swagger for Api)
图6(swagger UI for net)
一般安装到就应该可以正常运行了。但是运行后我们发现抛出异常
图7(异常1)
打开解决方案属性-->生成,勾选XML文档文件,保存就ok。
图8
图9(异常2)
出现该异常是由于没有增加依赖项,大家可以自行查看自己的dll文件版本,做出修改,把下面的代码插入到web.config中。
在把swagger.net中两行代码注释,估计是因为nuget包中的代码没有更新导致这个异常出现
图10(注释不需要代码)
好了现在我们来看看可以运行后的效果,在浏览器中输入URL:http://localhost:28129/swagger会自动跳转到http://localhost:28129/swagger/ui/index
图11
至此我们就能够正常运行swagger非常方便调试接口。
为了方便测试我们新建一个App的Model
返回消息ResultJson的Model
新增加一个AppController的Api
为了满足使用中需要用到Json格式数据,提出一个类
好了我们运行后可以看看效果
图12
点击 Try it out
图13
我们还可以将注释打开,我们就可以在页面里面看到注释,方便调试接口时候调用人了解各参数信息。打开
上面标记颜色为新增加内容,好了我们来看看最终效果
图14
图15
我们可以看到注释部分了,这样我们的swagger就完成了。
我把最终的代码发到此处,有需要代码的时候朋友可以直接下载。
http://pan.baidu.com/s/1mhFVZ4W
标签: swagger, webapi, C#
首先我们新建一个api项目
图1 (默认生成项目)
图2(运行首页)
图3(默认Api列表)
图4(默认Get的Api)
以上图1-4都是默认情况下生成页面看起来不是那么好看,而且测试也不方便,下面将介绍怎么使用swagger。
使用nuget包获取Swashbule、swagger的包并安装。
图5(Swashbule - swagger for Api)
图6(swagger UI for net)
一般安装到就应该可以正常运行了。但是运行后我们发现抛出异常
图7(异常1)
打开解决方案属性-->生成,勾选XML文档文件,保存就ok。
图8
图9(异常2)
出现该异常是由于没有增加依赖项,大家可以自行查看自己的dll文件版本,做出修改,把下面的代码插入到web.config中。
图10(注释不需要代码)
好了现在我们来看看可以运行后的效果,在浏览器中输入URL:http://localhost:28129/swagger会自动跳转到http://localhost:28129/swagger/ui/index
图11
至此我们就能够正常运行swagger非常方便调试接口。
为了方便测试我们新建一个App的Model
/// <summary> /// App信息 /// </summary> public class App { /// <summary> /// App的ID号 /// </summary> public int Id { get; set; } /// <summary> /// App的名称 /// </summary> public string Name { get; set; } /// <summary> /// App的说明 /// </summary> public string Remark { get; set; } }
返回消息ResultJson的Model
/// <summary> /// 返回处理结果 /// </summary> public class ResultJson { /// <summary> /// 返回代码 /// </summary> public int Code { get; set; } /// <summary> /// 返回消息 /// </summary> public string Message { get; set; } }
新增加一个AppController的Api
public class AppController : ApiController { private List<App> GetApps() { List<App> list = new List<App>(); list.Add(new App() { Id = 1, Name = "WeChat", Remark = "WeChat" }); list.Add(new App() { Id = 2, Name = "FaceBook", Remark = "FaceBook" }); list.Add(new App() { Id = 3, Name = "Google", Remark = "Google" }); list.Add(new App() { Id = 4, Name = "QQ", Remark = "QQ" }); return list; } /// <summary> /// 获取所有APP /// </summary> /// <returns>所有APP集合</returns> [HttpGet] public HttpResponseMessage Get() { return MyJson.ObjectToJson(GetApps()); } /// <summary> /// 获取指定APP /// </summary> /// <param name="id">需要获取APP的id</param> /// <returns>返回指定APP</returns> [HttpGet] public HttpResponseMessage Get(int id) { var app = GetApps().Where(m => m.Id.Equals(id)).FirstOrDefault(); return MyJson.ObjectToJson(app); } /// <summary> /// 增加App信息 /// </summary> /// <param name="value"></param> /// <returns></returns> [HttpPost] public HttpResponseMessage Insert([FromBody]App value) { ResultJson json = new ResultJson() { Code = 200, Message = "Ok" }; return MyJson.ObjectToJson(json); } /// <summary> /// 更新APP信息 /// </summary> /// <param name="value">APP信息</param> /// <returns>更新结果</returns> [HttpPut] public HttpResponseMessage UpdateApp([FromBody]App value) { ResultJson json = new ResultJson() { Code = 200, Message = "Ok" }; return MyJson.ObjectToJson(json); } /// <summary> /// 删除APP信息 /// </summary> /// <param name="id">APP编号</param> /// <returns>删除结果</returns> [HttpDelete] public HttpResponseMessage DeleteApp(int id) { ResultJson json = new ResultJson() { Code = 200, Message = "Ok" }; return MyJson.ObjectToJson(json); } }
为了满足使用中需要用到Json格式数据,提出一个类
public class MyJson { public static HttpResponseMessage ObjectToJson(object obj) { JavaScriptSerializer js = new JavaScriptSerializer(); string r = js.Serialize(obj); var result = new HttpResponseMessage(HttpStatusCode.OK) { Content = new StringContent(r, Encoding.UTF8, "text/json") }; return result; } public static HttpResponseMessage ObjectToJson(List<object> objs) { JavaScriptSerializer js = new JavaScriptSerializer(); string r = js.Serialize(objs); var result = new HttpResponseMessage(HttpStatusCode.OK) { Content = new StringContent(r, Encoding.UTF8, "text/json") }; return result; } }
好了我们运行后可以看看效果
图12
点击 Try it out
图13
我们还可以将注释打开,我们就可以在页面里面看到注释,方便调试接口时候调用人了解各参数信息。打开
public class SwaggerConfig { public static void Register() { var thisAssembly = typeof(SwaggerConfig).Assembly; GlobalConfiguration.Configuration .EnableSwagger(c => { c.SingleApiVersion("v1", "SwaggerApiDemo"); c.IncludeXmlComments(GetXmlCommentsPath()); }) .EnableSwaggerUi(c => { }); } private static string GetXmlCommentsPath() { return string.Format("{0}/bin/SwaggerApiDemo.XML", System.AppDomain.CurrentDomain.BaseDirectory); } }
上面标记颜色为新增加内容,好了我们来看看最终效果
图14
图15
我们可以看到注释部分了,这样我们的swagger就完成了。
我把最终的代码发到此处,有需要代码的时候朋友可以直接下载。
http://pan.baidu.com/s/1mhFVZ4W
标签: swagger, webapi, C#
相关文章推荐
- ASP.NET WebAPI 生成帮助文档与使用Swagger服务测试
- 【SpringFox / Swagger文档生成工具】使用过程中的几个问题积累
- .NET平台开源项目速览(4).NET文档生成工具ADB及使用
- 使用Sandcastle工具为.NET项目工程生成一份项目帮助文档chm
- 使用Swagger实现webapi接口自动化文档生成
- 使用Swagger实现webapi接口自动化文档生成
- .Net开发必备十大工具详解之使用GhostDoc为代码生成注释文档
- [.NET] WebApi 生成帮助文档及顺便自动创建简单的测试工具
- springboot 整合generator代码生成工具 使用swagger展示接口 使用pagehelper做分页
- 使用Sandcastle工具为.NET项目工程生成一份项目帮助文档chm
- swagger-codegen自动生成代码工具的介绍与使用
- Asp.net core WebApi 使用Swagger生成帮助页
- [置顶].NET平台开源项目速览(4).NET文档生成工具ADB及使用
- .net项目文档生成工具使用
- .Net工具 - 使用动软代码生成器快速生成可分页的GridView
- ibatis - 自动代码生成工具abator 使用介绍(s00n原作)
- 在.NET环境中使用单元测试工具NUnit
- 在.NET环境中使用单元测试工具Nunit
- 发布一个.Net轻型的ORM框架(包含自动生成工具),欢迎使用
- MySQL数据库使用Innodb数据库类型(工具生成Hibernate+Spring代码)