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

来源:https://www.cnblogs.com/zhongjyuan/p/12537200.html
-Advertisement-
Play Games

C#進階之WebAPI(一) 那麼首先第一點:什麼是WebAPI? 首先我們瞭解一下.net framework 的框架構成: 可以看到,WebAPI和mvc同屬於B/S模板框架的一種,官方對於WebApi的定義是:WebAPI是一個框架,可以輕鬆構建HTTP服務,覆蓋廣泛的客戶端,包括瀏覽器和移動 ...


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非常適合構建移動客戶端服務。

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 一, 創建工程,引入依賴 @目錄一, 創建工程,引入依賴創建工程工程間的關係的建立配置各個工程當中的 pow 配置信息,相關的依賴父工程(也就是總項目工程)的 pow 配置demo-module06-generate 模塊中pow 配置: Mybatis 逆向工程的 pow 配置demo-modul ...
  • 流程式控制制語句結構 目錄流程式控制制語句結構1.順序結構定義與特點示例2.分支結構2.1. if-else語句2.2. switch語句3.迴圈結構1. for迴圈2. while迴圈3. do-while迴圈使用場景和註意事項4.跳轉語句5.繪製程式流程圖基本步驟常用符號示例工具 1.順序結構 定義與特 ...
  • 多線程編程是每一個開發必知必會的技能,在實際項目中,為了避免頻繁創建和銷毀線程,我們通常使用池化的思想,用線程池進行多線程開發。 線程池在開發中使用頻率非常高,也包含不少知識點,是一個高頻面試題,本篇總結線程池的使用經驗和需要註意的問題,更好的應對日常開發和麵試。 如有更多知識點,歡迎補充~ 異常處 ...
  • Command,即命令,具體而言,指的是實現了 ICommand 介面的對象。此介面要求實現者包含這些成員: 1、CanExecute 方法:確定該命令是否可以執行,若可,返回 true;若不可,返回 false; 2、CanExecuteChanged 事件:發送命令(命令源)的控制項可以訂閱此事件 ...
  • 概述 由於工作需要,需要通過數據類型和方法名控制方法走向 用到的數據類型有8種(string,Int16,Int32,Int64,Boolean,Byte,Single,Double) 讀取的方法(參數一致,但是數據不同的泛型方法,返回值也是泛型)暫時只有11種,但肯定的是,後續一定會增加 原本計劃 ...
  • 前言 預計在 2024 年 11 月,C# 13 將與 .NET 9 一起正式發佈。今年的 C# 更新主要集中在 ref struct 上進行了許多改進,並添加了許多有助於進一步提高生產力的便利功能。 本文將介紹預計將在 C# 13 中添加的功能。 註意:目前 C# 13 還未正式發佈,因此以下內容 ...
  • Windows應用開發有很多場景需要動態獲取控制項顯示的圖像,即控制項轉圖片,用於其它界面的顯示、傳輸圖片數據流、保存為本地圖片等用途。 下麵分別介紹下一些實現方式以及主要使用場景 RenderTargetBitmap 控制項轉圖片BitmapImage/BitmapSource,在WPF中可以使用Ren ...
  • 一晃距C# 9發佈已經4年了,對於record關鍵字想必大家都不陌生了,不過呢發現還是有很多同學不屑於使用這個語法糖,確實,本質上 record 就是 class 的封裝,能用 record 書寫的類,那100%都是可以自己手擼出來的,但是呢有沒有考慮 別人可能一分鐘寫好的代碼你可能會需要數分鐘才能 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...