Asp.Net Web Api中使用Swagger
关于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 架构,我个人的理解就是对资源的增删查改,所以我也只写了四个方法:
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
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的更多相关文章
- ASP.NET Web API 中使用 swagger 来管理 API 文档
本文以 ASP.NET Web API 为后台框架,利用 EF6 连接 postgreSQL 数据库,使用 swagger 来生成 REST APIs文档.文章分二个部分,第一部分主要讲如何用 EF6 ...
- ASP.NET Core Web API中使用Swagger
本节导航 Swagger介绍 在ASP.NET CORE 中的使用swagger 在软件开发中,管理和测试API是一件重要而富有挑战性的工作.在我之前的文章<研发团队,请管好你的API文档& ...
- ASP.NET Web API中的Controller
虽然通过Visual Studio向导在ASP.NET Web API项目中创建的 Controller类型默认派生与抽象类型ApiController,但是ASP.NET Web API框架本身只要 ...
- 在ASP.NET Web API中使用OData
http://www.alixixi.com/program/a/2015063094986.shtml 一.什么是ODataOData是一个开放的数据协议(Open Data Protocol)在A ...
- ASP.NET Web API 中的异常处理(转载)
转载地址:ASP.NET Web API 中的异常处理
- 【ASP.NET Web API教程】6.2 ASP.NET Web API中的JSON和XML序列化
谨以此文感谢关注此系列文章的园友!前段时间本以为此系列文章已没多少人关注,而不打算继续下去了.因为文章贴出来之后,看的人似乎不多,也很少有人对这些文章发表评论,而且几乎无人给予“推荐”.但前几天有人询 ...
- 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 ...
- ASP.NET WEB API 中的路由调试与执行过程跟踪
路由调试 RouteDebugger 是调试 ASP.NET MVC 路由的一个好的工具,在ASP.NET WEB API中相应的有 WebApiRouteDebugger ,Nuget安装 Inst ...
- 能省则省:在ASP.NET Web API中通过HTTP Headers返回数据
对于一些返回数据非常简单的 Web API,比如我们今天遇到的“返回指定用户的未读站内短消息数”,返回数据就是一个数字,如果通过 http response body 返回数据,显得有些奢侈.何不直接 ...
随机推荐
- 求2的n次方对1e9+7的模,n大约为10的100000次方(费马小定理)
昨天做了一个题,简化题意后就是求2的n次方对1e9+7的模,其中1<=n<=10100000.这个就算用快速幂加大数也会超时,查了之后才知道这类题是对费马小定理的考察. 费马小定理:假如p ...
- INI
.ini 文件是Initialization File的缩写,即初始化文件,是windows的系统配置文件所采用的存储格式,统管windows的各项配置,一般用户就用windows提供的各项图形化管理 ...
- python之信号量【Semaphore】
# 互斥锁同时只允许一个线程更改数据,而Semaphore是同时允许一定数量的线程更改数据,比如 # 一个厕所有3个坑,那么最多只允许3个人上厕所,后面的人只能等里面有人出来了才能再进去 import ...
- K组翻转链表 · Reverse Nodes in k-Group
[抄题]: 给你一个链表以及一个k,将这个链表从头指针开始每k个翻转一下.链表元素个数不是k的倍数,最后剩余的不用翻转. [思维问题]: [一句话思路]: // reverse head->n1 ...
- MongoDB的数据类型(四)
JSON JSON是一种简单的数据表示方式,它易于理解.易于解析.易于记忆.但从另一方面来说,因为只有null.布尔.数字.字符串.数组和对象这几种数据类型,所以JSON有一定局限性.例如,JSON没 ...
- oracle基本查询入门(二) 子查询
一.子查询语法 SELECT select_list FROM table WHERE expr operator (SELECT select_list FROM table); 子查询在主查询之前 ...
- yii的layouts的使用
yii的layouts的使用 我们在控制器中使用render()时,yii会默认的载入布局. 1.在protected/componets下的Controller.php中修改$layout变量, 来 ...
- mysql只保留一条有效数据,删除其他重复的数据
delete from TableName where id in( SELECT ID FROM(SELECT * FROM TableName t0WHERE(t0.Field1,t0.Field ...
- HDOJ1242 Rescue(营救) 搜索
Rescue Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Subm ...
- 函数中返回char *类型
记录一次比较容易引起混淆的地方. #include <stdio.h> char *str(void) { return "nihao\n"; } int main() ...