Asp.Net Web Api中使用Swagger

   2023-02-09 学习力0
核心提示:关于swagger设计是API开发的基础。Swagger使API设计变得轻而易举,为开发人员、架构师和产品所有者提供了易于使用的工具。官方网址:https://swagger.io/solutions/api-design/在没有接触Swagger之前,使用Web Api的时候,我们都是使用word文档提供接口说明的

关于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 = 2;
        static ContactController()
        {
            contacts = new List<Contact>();
            contacts.Add(new Contact
            {
                Id = 1,
                Name = "dengwei",
                PhoneNo = "8378",
                EmailAddress = "dengwei@outlook.com",
                Address = "深圳市福田区"
            });
            contacts.Add(new Contact
            {
                Id = 2,
                Name = "lisi",
                PhoneNo = "8379",
                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 = 0, 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 = 0, 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 = 0, 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文档

Asp.Net Web Api中使用Swagger

然后通过NuGet安装Swagger

Asp.Net Web Api中使用Swagger

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

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

Asp.Net Web Api中使用Swagger

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

Asp.Net Web Api中使用Swagger

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

Asp.Net Web Api中使用Swagger

 

 
反对 0举报 0 评论 0
 

免责声明:本文仅代表作者个人观点,与乐学笔记(本网)无关。其原创性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容、文字的真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
    本网站有部分内容均转载自其它媒体,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责,若因作品内容、知识产权、版权和其他问题,请及时提供相关证明等材料并与我们留言联系,本网站将在规定时间内给予删除等相关处理.

  • 使用WebClient自动填写并提交ASP.NET页面表单的源代码
    使用WebClient自动填写并提交ASP.NET页面表单的
    转自:http://www.cnblogs.com/anjou/archive/2007/03/07/667253.html 在.NET中通过程序填写和提交表单还是比较简单。比如,要提交一个如下图所示的登录表单:           填写和提交以上表单的代码如下:       // 要提交表单的URI字符串
    02-09
  • asp.net mvc多条件+分页查询解决方案
    


            
asp.net mvc多条件+分页查询解决方案
    asp.net mvc多条件+分页查询解决方案
    http://www.cnblogs.com/nickppa/p/3232535.html开发环境vs2010css:bootstrapjs:jquery    bootstrap paginator原先只是想做个mvc的分页,但是一般的数据展现都需要检索条件,而且是多个条件,所以就变成了MVC多条件+分页查询因为美工不是很好,所以用的是
    02-09
  • ASP.NET操作Cookies的问题(Bug or Not)
    以下存和取都是在不同的页面中,如果是在同一个页面也没必要用cookies了。 Test1: 给Cookies赋值: const string AAA="aaa"; Response.Cookies[AAA].Value = "111;222;333"; 取值: string value = Request.Cookies[AAA].Value; // value为111 Test2: 给Cooki
    02-09
  • Asp.Net Core 自定义验证属性
      很多时候,在模型上的验证需要自己定义一些特定于我们需求的验证属性。所以这一篇我们就来介绍一下怎么自定义验证属性。  我们来实现一个验证邮箱域名的自定义验证属性,当然,最重要的是需要定义一个继承自ValidationAttribute的类,然后在实现其IsVal
    02-09
  • Asp.Net 之 枚举类型的下拉列表绑定
    有这样一个学科枚举类型:/// 学科 /// /summary public enum Subject {None = 0,[Description("语文")]Chinese = 1,[Description("数学")]Mathematics = 2,[Description("英语")]English = 3,[Description("政治")]Politics = 4,[Description("物理&qu
    02-09
  • [ASP.NET笔记] 1.Web基础知识
         1:http协议:     2:web服务器:     3:静态网页的概念     4:动态网页的概念       http协议:http(hypertext transfer protocol) 即超文本传输协议,这个协议是在internet上进行信息传送的协议任何网页之间要相互沟通,必须要尊循
    02-09
  • ASP.NET邮件发送 .net 发送邮件
      今天做了个ASP.NET做发送邮件功能,发现QQ邮箱好奇怪,当你用QQ邮箱做服务器的时候什么邮件都发送不出去(QQ邮箱除外)。而且爆出这样的错误:"邮箱不可用。 服务器响应为: Error: content rejected.http://mail.qq.com/zh_CN/help/content/rejectedmail.ht
    02-09
  • 由ASP.NET Core根据路径下载文件异常引发的探究
    前言    最近在开发新的项目,使用的是ASP.NET Core6.0版本的框架。由于项目中存在文件下载功能,没有使用类似MinIO或OSS之类的分布式文件系统,而是下载本地文件,也就是根据本地文件路径进行下载。这其中遇到了一个问题,是关于如何提供文件路径的,通
    02-09
  • ASP.NET的运行原理与运行机制 ASP.NET的开发模式包括
    ASP.NET的运行原理与运行机制 ASP.NET的开发模
    在Asp.net4和4.5中,新增了WebPages Framework,编写页面代码使用了新的Razor语法,代码更加的简洁和符合Web标准,编写方式更接近于PHP和以前的Asp,和使用WebForms这种模仿Windows Form编程方式有了很大不同,不再有大量控件和控件生成的大量不够灵活的代码
    02-09
  • ASP.NET 后台接收前台POST过来的json数据方法
     ASP.NET前后台交互之JSON数据 https://www.cnblogs.com/ensleep/p/3319756.html
    02-09
点击排行