首页 > 其他分享 >搭建.Net WebApi并配置Swagger(一)

搭建.Net WebApi并配置Swagger(一)

时间:2024-07-26 14:07:50浏览次数:10  
标签:WebApi WebAPI http MVC 服务 Net Swagger RESTful

C#进阶之WebAPI(一)

那么首先第一点:什么是WebAPI?
    首先我们了解一下.net framework 的框架构成:

 

 

 

可以看到,WebAPI和mvc同属于B/S模板框架的一种,官方对于WebApi的定义是:WebAPI是一个框架,可以轻松构建HTTP服务,覆盖广泛的客户端,包括浏览器和移动设备,WebAPI是在.NetFramwork上构建RESTful程序的理想平台。
    这里有必要解释一下什么是RESTful: RESTful是一种设计风格,REST中的 get、post、put、delete来进行数据的增删改查,如果开发人员的应用程序符合RESTful原则,那他的服务可被称之为“Restful风格应用服务”。
 
然后我们了解一下:为什么要使用WebAPI?
    在解释这个问题之前我们需要首先知道一下.net为外部提供接口的方式有哪些?
    答:WCF、WebService、WebAp、一般处理程序。
      那来了解一下他们之间的区别:
        WebService:
            1:基于soap协议,数据格式是xml、
            2:只支持http协议、
            3:不是开源的,但是可以被任意一个了解xml的人使用、
            4:只能部署在iis上。
        WCF:
            1:基于soap协议,数据格式是xml、
            2:WCF是webservice的进化版,支持各种各样的协议,像TCP、http、https、NamedPipes、MSMQ等、
            3:不是开源的,但是可以被任意一个了解xml的人使用、
            4:可以部署在应用程序中、IIS上或者Windows服务中。
        WebAPI:
            1:是一个简单的构建http服务的新框架、
            2:在.net平台上WebAPI是一个开源的、理想的、构建RESTful服务的技术、
            3:可以使用http的所有特点,(比如URIs、request/response头、缓存、版本控制、多种内容格式)、
            4:支持mvc的特性,像路由、控制器、action、fiter、模型绑定、控制反转、依赖注入、单元测试、
            5:可以部署在应用程序中、IIS上、
            6:是一个轻量级的框架,对各种终端的支持都很好、
            7:Response可以被webAPI的MediaTypeFormatter转换成json、XML或者任何你想转换的格式。
        一般处理程序:
            一般处理程序其实就是和页面处理程序相区分开的,因为实现的是IhttpHandler接口,而且不需要继承自Page类。所以没有那么多的事件需要处理,不必消耗太多资源,所以性能方面要比aspx高。
那么回到这个问题,为什么要使用WebApi?
        当你遇到下面这些情况的时候,就可以考虑使用webAPI来构建你的服务了;
            1:需要webservice但是不需要soap、
            2:需要在已有的WCF服务基础上建立non-soap-based http服务、
            3:只想发布一些简单的http服务,不想使用相对复杂的wcf配置、
            4:发布的服务会被限制带宽的设备访问、
            5:希望使用开源框架,关键时刻可以自己调试或者自定义一下框架。
 
最后总结一下WebAPI和MVC之间的区别:WebAPI和MVC之间有什么区别?
        相信使用过mvc和webapi的同学都会觉得这两者太相似了,使用起来也差不多,但是既然是两个框架,那肯定是有区别的,我对WebAPI和MVC的区别做了一下总结:
            1:MVC主要是用来构建网站的,既关心数据也关心页面展示,而WebAPI只关心数据、
            2:WebAPI支持格式协商,客户端可以通过Accept header通知服务器期望的格式、
            3:WebApi支持Self Host,MVC目前不支持、
            4:WebAPI通过不同的http verb表达不同的动作(CRUD),MVC则通过Action名字表达动作、
            5:WebAPI内建于System.Web.Http 命名空间下,而MVC位于Systm.Web.Mvc命名空间下,因此路由等有些许不同、
            6:WebAPI非常适合构建移动客户端服务。

 

标签:WebApi,WebAPI,http,MVC,服务,Net,Swagger,RESTful
From: https://www.cnblogs.com/zhongjyuan/p/12537200.html

相关文章

  • “‘NoneType’类型的对象没有 len()”错误
    下面的代码应该从连接到RaspberryPiPicoWH的电容式传感器连接遥测土壤湿度数据并将其发送到ThingsBoard云,但当我运行它时,它显示“‘NoneType’类型的对象没有len()”ThonnyIDE的shell中出现错误。main.pyfrommachineimportADC,Pinimportumqtt.robustas......
  • cad.net 图元做块后保留绘图次序
    今天水友在强有力提出一个问题,选中一部分对象,做成块后,绘图次序发生了变化,如何保留原来的绘图次序。这是一个十分有用的问题,我以前从未考虑过此问题,于是我研究了一下,将结果分享给大家 1.验证我先后在cad中创建了3条多段线(多段线设置宽度后可以很方便的看到绘图次序),这里命名为1......
  • 基于.NET开源、强大易用的短链生成及监控系统
    前言今天大姚给大家分享一个基于.NET开源(MITLicense)、免费、强大易用的短链生成及监控系统:SuperShortLink。项目介绍SuperShortLink是一个基于.NET开源(MITLicense)、免费、强大易用的短链生成及监控系统,包含了短URL的生成、短URL跳转长URL、短URL访问统计以及Web后台监控页面,......
  • Java NIO框架Netty教程(四)- ChannelBuffer
    在字符串消息收发中提到。ChannelBuffer是Netty中非常重要的概念。所有消息的收发都依赖于这个Buffer。我们通过Netty的官方的文档来了解一下,基于流的消息传递机制。Inastream-basedtransportsuchasTCP/IP,receiveddataisstoredintoasocketreceivebuffer.Unf......
  • Java NIO框架Netty教程(六)-Java NIO Selector模式
    全文详见个人独立博客:JavaNIO框架Netty教程(六)-JavaNIOSelector模式JavaNIO框架Netty教程(六)-JavaNIOSelector模式看到标题,您可能觉得,这跟Netty有什么关系呢?确实,如果你完全是使用Netty的,那么可能你可以完全不需要了解Selector。但是,不得不提的是,Netty底层关于NIO的实......
  • 如何将Python嵌入.Net?
    我尝试基于文档此处和此处使用pythonnet将Python嵌入到.Net中。这是我的代码Runtime.PythonDLL=@"D:\Dev\Console\.conda\python311.dll";PythonEngine.Initialize();dynamicsys=Py.Import("sys");Console.WriteLine("Pythonversion:&quo......
  • IIS同一站点下发布两个或多个net8、net core应用程序池
    IIS同一站点下布两个net8、netcore报“ASP.NETCoredoesnotsupportmultipleappsinthesameapppool”,意思是多个.netcore程序不支持同一个程序池。那我们手动在创建一个程序池,分给另一个应用程序就可以了。步骤如下:1、点击IIS“应用程序池”-》添加应用程序池 2、......
  • 如何获取Asp.NetCore当前启动地址
    在ASP.NETCore中获取当前启动地址,可以通过几种不同的方式来实现,具体取决于你的应用场景和可用的上下文。以下是一些常见的方法:1.使用HttpContext在控制器或中间件中,你可以通过HttpContext对象来获取当前请求的完整URL或主机地址。这是最直接的方法,因为HttpContext提供了对......
  • .NET 中使用依赖注入时,如果将 DbContext 注册为单例,会导致一些严重的问题
    在.NET中使用依赖注入时,如果将DbContext注册为单例,会导致一些严重的问题。DbContext设计为一个短生命周期的对象,通常与一个请求(在Web应用中)或一个单元操作(在桌面应用中)相对应。以下是将DbContext注册为单例会导致的问题:1.线程安全问题DbContext不是线程安全的,将其注......
  • netty入门-3 EventLoop和EventLoopGroup,简单的服务器实现
    文章目录EventLoop和EventLoopGroup服务器与客户端基本使用增加非NIO工人NioEventLoop处理普通任务与定时任务结语EventLoop和EventLoopGroup二者大概是什么这里不再赘述,前一篇已简述过。不理解也没关系。下面会简单使用,看了就能明白是什么这篇文章只说NioEvent......