关于swagger

设计是API开发的基础。Swagger使API设计变得轻而易举,为开发人员、架构师和产品所有者提供了易于使用的工具。

官方网址:https://swagger.io/solutions/api-design/

在没有接触Swagger之前,使用Web Api的时候,我们都是使用word文档提供接口说明的,比较尬,使用文档不方便的地方太多了,比如,当时使用的时候是可以马上找到的,但是时间久了,你就不记得了,找不到了,比如,调试的时候,出现问题,你就不知道到底是使用方的问题,还是提供方的问题,测试的时候不方便,当然,可以使用Postman来模拟请求,但是需要提供JSON数据的时候还是很不方便的,需要自己构造数据等等。接触到Swagger后,这些问题迎刃而解,下面一起学习一下在Asp.Net Web Api中怎么使用Swagger。

一、新建Web Api解决方案,新建ContactController

public class ContactController : ApiController, IResourceService<Contact>
{
static List<Contact> contacts;
static int counter = ;
static ContactController()
{
contacts = new List<Contact>();
contacts.Add(new Contact
{
Id = ,
Name = "dengwei",
PhoneNo = "",
EmailAddress = "dengwei@outlook.com",
Address = "深圳市福田区"
});
contacts.Add(new Contact
{
Id = ,
Name = "lisi",
PhoneNo = "",
EmailAddress = "lisi@qq.com",
Address = "深圳市南山区"
});
}
/// <summary>
/// 根据Id获取contact对象
/// </summary>
/// <param name="id">id</param>
/// <returns>返回继承自IEnumerable的对象</returns>
public JsonResult<Contact> Get(int id)
{
var contact = contacts.Where(x => x.Id == id).FirstOrDefault();
return Json<Contact>(contact);
}
/// <summary>
/// 新增contact对象
/// </summary>
/// <param name="model">contact对象</param>
public JsonResult<ResultData> Post(Contact model)
{
Interlocked.Increment(ref counter);
model.Id = counter;
contacts.Add(model);
return Json<ResultData>(new ResultData { Code = , Message = "success" });
}
/// <summary>
/// 修改contact对象
/// </summary>
/// <param name="model">contact对象</param>
public JsonResult<ResultData> Put(Contact model)
{
contacts.Remove(contacts.First(x => x.Id == model.Id));
contacts.Add(model);
return Json<ResultData>(new ResultData { Code = , Message = "success" });
}
/// <summary>
/// 根据Id删除contact对象
/// </summary>
/// <param name="id">Id</param>
public JsonResult<ResultData> Delete(int id)
{
contacts.Remove(contacts.First(x => x.Id == id));
return Json<ResultData>(new ResultData { Code = , Message = "success" });
}
}

我们可以看到,这个控制器类继承自IResourceService的接口,这个接口中一共四个方法:Get,Post,Put,Delete,说到这里不得不提一下RESTful 架构,我个人的理解就是对资源的增删查改,所以我也只写了四个方法:

Get:查询
Post:新增
Put:修改
Delete:删除

public interface IResourceService<T> where T : class
{
JsonResult<T> Get(int id);
JsonResult<ResultData> Post(T model);
JsonResult<ResultData> Put(T model);
JsonResult<ResultData> Delete(int id);
}

相关实体类:

public class ResultData
{
/// <summary>
/// 返回码 0 表示成功 其余表示失败
/// </summary>
public int Code { get; set; }
/// <summary>
/// 状态描述
/// </summary>
public string Message { get; set; }
}
public class Contact
{
/// <summary>
/// ID
/// </summary>
public int Id { get; set; }
/// <summary>
/// 姓名
/// </summary>
public string Name { get; set; }
/// <summary>
/// 电话
/// </summary>
public string PhoneNo { get; set; }
/// <summary>
/// 邮箱
/// </summary>
public string EmailAddress { get; set; }
/// <summary>
/// 地址
/// </summary>
public string Address { get; set; }
}

Api接口写完之后,修改解决方案输出xml文档

然后通过NuGet安装Swagger

装完成之后,修改SwaggerConfig中的xml路径为你刚才修改的解决方案的xml输出路径。
c.IncludeXmlComments(string.Format("{0}/bin/ReallyWantToApi.XML",System.AppDomain.CurrentDomain.BaseDirectory));

运行,在地址后面出入swagger回车,Api在线文档出来了,就是这么简单。如果你的Api在线文档运行的时候有异常,那么,可以肯定你的Api接口定义是不符合规范的。

下面来测试一下,接口是否可用:测试Get,返回成功了,完美。

测试POST,非常的爽,旁边已经提供了相关的JSON模板,点击一下,然后修改你需要的Value,Try it Out

Asp.Net Web Api中使用Swagger的更多相关文章

  1. ASP.NET Web API 中使用 swagger 来管理 API 文档

    本文以 ASP.NET Web API 为后台框架,利用 EF6 连接 postgreSQL 数据库,使用 swagger 来生成 REST APIs文档.文章分二个部分,第一部分主要讲如何用 EF6 ...

  2. ASP.NET Core Web API中使用Swagger

    本节导航 Swagger介绍 在ASP.NET CORE 中的使用swagger   在软件开发中,管理和测试API是一件重要而富有挑战性的工作.在我之前的文章<研发团队,请管好你的API文档& ...

  3. ASP.NET Web API中的Controller

    虽然通过Visual Studio向导在ASP.NET Web API项目中创建的 Controller类型默认派生与抽象类型ApiController,但是ASP.NET Web API框架本身只要 ...

  4. 在ASP.NET Web API中使用OData

    http://www.alixixi.com/program/a/2015063094986.shtml 一.什么是ODataOData是一个开放的数据协议(Open Data Protocol)在A ...

  5. ASP.NET Web API 中的异常处理(转载)

    转载地址:ASP.NET Web API 中的异常处理

  6. 【ASP.NET Web API教程】6.2 ASP.NET Web API中的JSON和XML序列化

    谨以此文感谢关注此系列文章的园友!前段时间本以为此系列文章已没多少人关注,而不打算继续下去了.因为文章贴出来之后,看的人似乎不多,也很少有人对这些文章发表评论,而且几乎无人给予“推荐”.但前几天有人询 ...

  7. Asp.Net Web API 2第十三课——ASP.NET Web API中的JSON和XML序列化

    前言 阅读本文之前,您也可以到Asp.Net Web API 2 系列导航进行查看 http://www.cnblogs.com/aehyok/p/3446289.html 本文描述ASP.NET W ...

  8. ASP.NET WEB API 中的路由调试与执行过程跟踪

    路由调试 RouteDebugger 是调试 ASP.NET MVC 路由的一个好的工具,在ASP.NET WEB API中相应的有 WebApiRouteDebugger ,Nuget安装 Inst ...

  9. 能省则省:在ASP.NET Web API中通过HTTP Headers返回数据

    对于一些返回数据非常简单的 Web API,比如我们今天遇到的“返回指定用户的未读站内短消息数”,返回数据就是一个数字,如果通过 http response body 返回数据,显得有些奢侈.何不直接 ...

随机推荐

  1. 利用 AWK 的数值计算功能提升工作效率(转载)

    Awk 是一种优秀的文本样式扫描和处理工具.转文侧重介绍了 awk 在数值计算方面的运用,并通过几个实际工作中的例子,阐述了如何利用 awk 的计算功能来提高我们的工作效率.转文源自IBM Bluem ...

  2. java实现24点游戏代码

    import java.util.Arrays;import java.util.Scanner; public class Test07 {    public static void main(S ...

  3. ASP.NET中修改从数据库获取的datatable中的值

    有些时候,我们从数据库表中获取一个实体的对象,但有些内容并不是最终显示的内容,格式也都是不一样.经过一番尝试,发现datatable中的数值如果跟想要改变的类型不一致,就无法更改,只有添加新列,然后把 ...

  4. c++中Socket编程(入门)

    转载 :http://www.cnblogs.com/L-hq815/archive/2012/07/09/2583043.html 但该作者也是转载,国外网站翻译之作 本人在学习Socket编程时, ...

  5. centos7.5配置双网卡上网

    一.环境及说明 当初有这个需求,主要是帮一个高校的客户搭建一个大数据集群,使用的是校园网,交换机上一个端口只能连接一部电脑上网,不能通过路由组建子网,确保集群中的服务器有子网ip的同时,也能够通过公网 ...

  6. php 中的信号处理

    首先我们需要了解几个函数 pcntl_signal   安装信号处理器,也就是当指定信号发生时,调用函数. pcntl_alarm   指定秒数后向进程发送SIGALRM信号. posix_getpi ...

  7. golang协程进行同步方法

    1.使用chanel func main() { done := make(chan bool) ticker := time.NewTicker(time.Millisecond * 1000) g ...

  8. Python3编程技巧

    高效处理数据类型方法: In []: from random import randint In []: data=[randint(-,) )] In []: data Out[]: [-, -, ...

  9. Linux indent命令

    一.简介 indent可辨识C的原始代码文件,并加以格式化,以方便程序设计师阅读. 二.选项 http://www.cnblogs.com/xuxm2007/archive/2011/11/03/22 ...

  10. [Selenium] CSS3 选择器

    在 CSS 中,选择器是一种模式,用于选择需要添加样式的元素. "CSS" 列指示该属性是在哪个 CSS 版本中定义的.(CSS1.CSS2 还是 CSS3.) 选择器 例子 例子 ...