国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

.net 溫故知新【11】:Asp.Net Core WebAPI 入門使用及介紹

這篇具有很好參考價(jià)值的文章主要介紹了.net 溫故知新【11】:Asp.Net Core WebAPI 入門使用及介紹。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

在Asp.Net Core 上面由于現(xiàn)在前后端分離已經(jīng)是趨勢(shì),所以asp.net core MVC用的沒(méi)有那么多,主要以WebApi作為學(xué)習(xí)目標(biāo)。

一、創(chuàng)建一個(gè)WebApi項(xiàng)目

我使用的是VS2022, .Net 7版本。
在創(chuàng)建界面有幾項(xiàng)配置:

  • 配置Https
  • 啟用Docker
  • 使用控制器
  • 啟用OpenAPI支持
  • 不使用頂級(jí)語(yǔ)句

.net 溫故知新【11】:Asp.Net Core WebAPI 入門使用及介紹

其中配置Https 是WebApi是否使用https協(xié)議,啟用docker是配置服務(wù)是否docker部署支持。我們這邊作為學(xué)習(xí)就先不管docker了。
然后下面還有三個(gè)配置,第一個(gè)是說(shuō)是否使用控制器,如果使用接口服務(wù)放在Controllers文件夾下統(tǒng)一管理并且相關(guān)路由規(guī)則不一樣。
第二個(gè)啟用OpenAPI支持,如果啟用OpenAPI說(shuō)的是swagger支持,也就是說(shuō).net 自動(dòng)集成了swagger。
第三個(gè)不使用頂級(jí)語(yǔ)句,如果勾選后則程序的Program類和Main方法完整。

那么我們看下上面配置是什么意思,第二個(gè)swagger支持我們就不管了默認(rèn)開(kāi)啟。我建兩個(gè)項(xiàng)目AspNetCoreWebAPI_1、AspNetCoreWebAPI_2,AspNetCoreWebAPI_1我們勾選上【使用控制器】、【不使用頂級(jí)語(yǔ)句】。AspNetCoreWebAPI_2項(xiàng)目這兩項(xiàng)都不選。

先看下項(xiàng)目目錄結(jié)構(gòu)

不同在于AspNetCoreWebAPI_1項(xiàng)目多了Controllers文件夾和一個(gè)WeatherForecast類,WeatherForecast類是示例接口中有使用。

.net 溫故知新【11】:Asp.Net Core WebAPI 入門使用及介紹

我們?cè)賹?duì)比一下 Program

可以看到在AspNetCoreWebAPI_1項(xiàng)目中Program類和Main方法完整,因?yàn)橐褂肅ontroller的原因,所以依賴注入了Controller服務(wù)。并且使用了MapControllers注冊(cè)路由。

在AspNetCoreWebAPI_2項(xiàng)目中沒(méi)有只有Main方法內(nèi)的代碼,這就是頂級(jí)語(yǔ)句。然后由于我們還使用了最小API,就是不使用Controller方式注冊(cè)和配置路由,直接在代碼中自己注冊(cè)接口和實(shí)現(xiàn)接口處理的代理方法。

.net 溫故知新【11】:Asp.Net Core WebAPI 入門使用及介紹

按照以前asp.net習(xí)慣和項(xiàng)目清晰度維護(hù)性我們一般是使用Controller的方式,并且不使用頂級(jí)語(yǔ)句。

而最小 API,是創(chuàng)建具有最小依賴項(xiàng)的 HTTP API。 它非常適合于需要在 ASP.NET Core 中僅包括最少文件、功能和依賴項(xiàng)的微服務(wù)和應(yīng)用。

另外還有一個(gè)appsetting.json配置文件,這部分內(nèi)容也在前面已經(jīng)介紹過(guò),歡迎了解:.net 溫故知新:【8】.NET 中的配置從xml轉(zhuǎn)向json

{
  "Logging": {
    "LogLevel": {
      "Default": "Information",
      "Microsoft.AspNetCore": "Warning"
    }
  },
  "AllowedHosts": "*"
}

二、WebApi運(yùn)行

我們調(diào)試項(xiàng)目AspNetCoreWebAPI_1,此時(shí)會(huì)啟動(dòng)一個(gè)服務(wù)在后端,同時(shí)啟動(dòng)瀏覽器訪問(wèn)該站點(diǎn)的swagger,該swagger用于調(diào)我們調(diào)試webapi接口。
.net 溫故知新【11】:Asp.Net Core WebAPI 入門使用及介紹

.net 溫故知新【11】:Asp.Net Core WebAPI 入門使用及介紹

我們點(diǎn)擊示例接口WeatherForecast,訪問(wèn)接口會(huì)返回json格式數(shù)據(jù)。響應(yīng)的headers里面可以看到后端運(yùn)行的服務(wù)器是Kestrel,和我們以前.net framework不一樣的事需要借助IIS作為服務(wù)器。現(xiàn)在的Kestrel是包含在程序中的,這個(gè)Kestrel 以后再討論。
.net 溫故知新【11】:Asp.Net Core WebAPI 入門使用及介紹

三、WeatherForecastController

WeatherForecastController是在創(chuàng)建項(xiàng)目后默認(rèn)生成的一個(gè)示例Controller。在該Controller中我們可以看到幾個(gè)重點(diǎn)項(xiàng)。

using Microsoft.AspNetCore.Mvc;

namespace AspNetCoreWebAPI_1.Controllers
{
    [ApiController]
    [Route("[controller]")]
    public class WeatherForecastController : ControllerBase
    {
        private static readonly string[] Summaries = new[]
        {
        "Freezing", "Bracing", "Chilly", "Cool", "Mild", "Warm", "Balmy", "Hot", "Sweltering", "Scorching"
    };

        private readonly ILogger<WeatherForecastController> _logger;

        public WeatherForecastController(ILogger<WeatherForecastController> logger)
        {
            _logger = logger;
        }

        [HttpGet(Name = "GetWeatherForecast")]
        public IEnumerable<WeatherForecast> Get()
        {
            return Enumerable.Range(1, 5).Select(index => new WeatherForecast
            {
                Date = DateOnly.FromDateTime(DateTime.Now.AddDays(index)),
                TemperatureC = Random.Shared.Next(-20, 55),
                Summary = Summaries[Random.Shared.Next(Summaries.Length)]
            })
            .ToArray();
        }
    }
}
  1. ControllerBase 基類
    web API 控制器通常應(yīng)派生自 ControllerBase 而不是 Controller。 Controller 派生自 ControllerBase,并添加對(duì)視圖的支持,因此它用于處理 Web 頁(yè)面,而不是 Web API 請(qǐng)求。 如果同一控制器必須支持視圖和 Web API,則派生自 Controller。
  2. [ApiController]
    [ApiController] 屬性可應(yīng)用于控制器類,以啟用下述 API 特定的固定行為:
    1)屬性路由要求:不能通過(guò)由 UseEndpoints、UseMvc 或 UseMvcWithDefaultRoute 定義的傳統(tǒng)路由訪問(wèn)操作,傳統(tǒng)路由就是以前老的路由規(guī)則,型如"{controller=Home}/{action=Index}/{id?}"。需要使用[Route("XX")]指定路由。
    自動(dòng) HTTP 400 響應(yīng):[ApiController] 屬性使模型驗(yàn)證錯(cuò)誤自動(dòng)觸發(fā) HTTP 400 響應(yīng)。
    2)綁定源參數(shù)推理:綁定源特性定義可找到操作參數(shù)值的位置,接口的參數(shù)通過(guò)推理規(guī)則應(yīng)用于操作參數(shù)的默認(rèn)數(shù)據(jù)源。
    3)Multipart/form-data 請(qǐng)求推理:[ApiController] 屬性對(duì) IFormFile 和 IFormFileCollection 類型的操作參數(shù)應(yīng)用推理規(guī)則。 為這些類型推斷 multipart/form-data 請(qǐng)求內(nèi)容類型。
    4)、錯(cuò)誤狀態(tài)代碼的問(wèn)題詳細(xì)信息: 將錯(cuò)誤結(jié)果(狀態(tài)代碼為 400 或更高的狀態(tài)碼)轉(zhuǎn)換為為 ProblemDetails 的結(jié)果。也就是說(shuō)狀態(tài)碼會(huì)轉(zhuǎn)換如下json格式返回信息。
{
  type: "https://tools.ietf.org/html/rfc7231#section-6.5.4",
  title: "Not Found",
  status: 404,
  traceId: "0HLHLV31KRN83:00000001"
}
  1. [Route("[controller]")]
    指定控制器上的屬性路由,屬性路由將應(yīng)用的功能建模為一組資源,其中操作由 HTTP 謂詞表示。也就是說(shuō)路由該屬性配置了路由,如上圖請(qǐng)求時(shí)的路由https://localhost:7122/WeatherForecast,配置中“[controller]”為標(biāo)記替換,為方便起見(jiàn),屬性路由支持標(biāo)記替換,方法是將標(biāo)記用方括號(hào)([、])括起來(lái)[controller]用于替換WeatherForecastController中WeatherForecast部分。
  2. [HttpGet(Name = "GetWeatherForecast")]
    HttpGet指示Get方法為Route路由的操作,即使我們將Get方法改為其他名字仍然不影響請(qǐng)求路由https://localhost:7122/WeatherForecast,并且以Get方式。這種api風(fēng)格即為Rest風(fēng)格。Rest風(fēng)格我們后面再學(xué)習(xí)。
    ASP.NET Core 具有以下 HTTP 謂詞模板:
    • [HttpGet]
    • [HttpPost]
    • [HttpPut]
    • [HttpDelete]
    • [HttpHead]
    • [HttpPatch]
  3. logger日志記錄
    日志記錄是基礎(chǔ)知識(shí)點(diǎn),這部分內(nèi)容在我們之前溫故知新中已經(jīng)詳細(xì)介紹過(guò),可移步了解:.net 溫故知新:【9】.NET日志記錄 ILogger使用和原理

以上為我們?nèi)腴TWebApi創(chuàng)建的一個(gè)默認(rèn)項(xiàng)目,并對(duì)創(chuàng)建選項(xiàng)、項(xiàng)目結(jié)構(gòu)、服務(wù)要點(diǎn)進(jìn)行了分析,后面將更進(jìn)一步學(xué)習(xí)分享其他asp.net core webapi重要知識(shí)。文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-470786.html

到了這里,關(guān)于.net 溫故知新【11】:Asp.Net Core WebAPI 入門使用及介紹的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 溫故知新—Activity的五種啟動(dòng)模式

    溫故知新—Activity的五種啟動(dòng)模式

    這兩天遇到了一個(gè) bug ,說(shuō)是應(yīng)用打開(kāi)一個(gè)二級(jí)頁(yè)面,然后直接回到桌面,并不是殺掉應(yīng)用,只是回到桌面,再次打開(kāi)的時(shí)候沒(méi)有回到那個(gè)二級(jí)頁(yè)面,而是回到了首頁(yè)。 看到這里,很多人大概都知道是什么原因了,沒(méi)錯(cuò),就是 Activity 的啟動(dòng)模式設(shè)置為了 singleTask 而導(dǎo)致的問(wèn)題

    2024年02月09日
    瀏覽(22)
  • 溫故知新:dfs模板-843. n-皇后問(wèn)題

    溫故知新:dfs模板-843. n-皇后問(wèn)題

    n?n?皇后問(wèn)題是指將?nn?個(gè)皇后放在?n×nn×n?的國(guó)際象棋棋盤上,使得皇后不能相互攻擊到,即任意兩個(gè)皇后都不能處于同一行、同一列或同一斜線上。 現(xiàn)在給定整數(shù)?nn,請(qǐng)你輸出所有的滿足條件的棋子擺法。 輸入格式 共一行,包含整數(shù)?nn。 輸出格式 每個(gè)解決方案占?

    2024年02月07日
    瀏覽(23)
  • 溫故知新之:代理模式,靜態(tài)代理和動(dòng)態(tài)代理(JDK動(dòng)態(tài)代理)

    溫故知新之:代理模式,靜態(tài)代理和動(dòng)態(tài)代理(JDK動(dòng)態(tài)代理)

    代理模式可以在不修改被代理對(duì)象的基礎(chǔ)上,通過(guò)擴(kuò)展代理類,進(jìn)行一些功能的附加與增強(qiáng)。 靜態(tài)代理 是一種代理模式的實(shí)現(xiàn)方式,它在編譯期間就已經(jīng)確定了代理對(duì)象,需要為每一個(gè)被代理對(duì)象創(chuàng)建一個(gè)代理類。靜態(tài)代理的實(shí)現(xiàn)比較簡(jiǎn)單,但是每個(gè)被代理對(duì)象都需要?jiǎng)?chuàng)建

    2024年02月11日
    瀏覽(28)
  • Linux學(xué)習(xí)第31天:Linux MISC 驅(qū)動(dòng)實(shí)驗(yàn):溫故知新

    Linux學(xué)習(xí)第31天:Linux MISC 驅(qū)動(dòng)實(shí)驗(yàn):溫故知新

    Linux版本號(hào)4.1.15? ?芯片I.MX6ULL? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??? ?? 大叔學(xué)Linux? ? 品人間百味? 思文短情長(zhǎng) ? ? ? ? ? 學(xué)習(xí)是一個(gè)不斷重復(fù)的過(guò)程。只有不斷的使用、修正,才能越記越牢。將學(xué)習(xí)到的新的知識(shí)點(diǎn)應(yīng)用到以往的項(xiàng)目經(jīng)驗(yàn)中,才能不斷提升自我,長(zhǎng)此以往

    2024年02月06日
    瀏覽(18)
  • ASP.NET Core SingleR Core:WebApi + .net 客戶端開(kāi)發(fā)

    ASP.NET Core SingleR Core:WebApi + .net 客戶端開(kāi)發(fā)

    我之前稍微研究了一下SignalR Core。用起來(lái)還行。簡(jiǎn)單來(lái)說(shuō)SignalR就是用來(lái)解決實(shí)時(shí)通訊的問(wèn)題的。 ASP.NET Core SingleR:初次體驗(yàn)和簡(jiǎn)單項(xiàng)目搭建 SignalR支持三種客戶端,C#,Java,JavaScirpt?;緣蛴昧?。本身就是微軟開(kāi)發(fā)的,肯定支持自己的語(yǔ)言。因?yàn)槭荳ebsocket的上層封裝,所以也要支

    2024年01月20日
    瀏覽(557)
  • Asp.net core Webapi 如何執(zhí)行定時(shí)任務(wù)?

    Asp.net core Webapi 如何執(zhí)行定時(shí)任務(wù)?

    在計(jì)算機(jī)系統(tǒng)中,定時(shí)執(zhí)行一些后臺(tái)任務(wù)是很常見(jiàn)的場(chǎng)景,比如定時(shí)發(fā)送郵件、備份數(shù)據(jù)等等。 那么,.NET 技術(shù)如何通過(guò)編程靈活地實(shí)現(xiàn)項(xiàng)目里復(fù)雜的自定義任務(wù)呢? 如果是 Windows 生態(tài),通常來(lái)說(shuō),可以有這些方式: 編寫一個(gè)程序,通過(guò) Windows 內(nèi)置的任務(wù)計(jì)劃來(lái)定時(shí)執(zhí)行。

    2024年02月04日
    瀏覽(87)
  • Asp.NET Core WebAPI 入門學(xué)習(xí)筆記,超詳細(xì)

    Asp.NET Core WebAPI 入門學(xué)習(xí)筆記,超詳細(xì)

    WebAPI 是一種傳統(tǒng)的方式,用于構(gòu)建和暴露 RESTUI風(fēng)格的Web服務(wù)。它提供了豐富的功能和靈活性,可以處理各種HTTP請(qǐng)求,并支持各種數(shù)據(jù)格式,如JSON、XML等。 WebAPI使用控制器(Controllers)和動(dòng)作方法(ActionMethods)的概念、通過(guò)路由配置將請(qǐng)求映射到相應(yīng)的方法上。 開(kāi)發(fā)人員可以使用

    2024年04月24日
    瀏覽(94)
  • ASP.NET core WebApi Cors跨域解決

    ASP.NET core WebApi Cors跨域解決

    我用了最新版的Asp.net webapi ,在csdn上面搜跨域如何解決的時(shí)候,發(fā)現(xiàn)csdn上面對(duì)于.NET技術(shù)討論不是很多。沒(méi)辦法,只能面向官方文檔和GitHub編程了。 前面兩個(gè)已經(jīng)放棄維護(hù)了,我們就不用了。用最新的webApi 我們引入了最新的api后可以在官方網(wǎng)址上查看文檔(有些地址是gitH

    2024年04月29日
    瀏覽(93)
  • asp.net core webapi如何執(zhí)行周期性任務(wù)

    asp.net core webapi如何執(zhí)行周期性任務(wù)

    新建asp.net core webapi項(xiàng)目,使用Nuget搜索安裝Quartz包。 注意:定時(shí)執(zhí)行時(shí)間格式,參考連接:https://www.cnblogs.com/wudequn/p/8506938.html 在IIS中找到這個(gè)站點(diǎn)所用的程序池,點(diǎn)擊“高級(jí)設(shè)置…” 在打開(kāi)的列表中更改以下設(shè)置: 回收——固定時(shí)間間隔(分鐘) 改為 0 ——虛擬/專用內(nèi)存

    2024年02月13日
    瀏覽(101)
  • ASP.NET CORE WEBAPI 登錄 JWT 鑒權(quán) ,接口權(quán)限驗(yàn)證

    介紹 當(dāng)今Web開(kāi)發(fā)中,API的使用越來(lái)越廣泛,而API的安全性也變得越來(lái)越重要。其中,JWT(JSON Web Token)鑒權(quán)和授權(quán)是一種常見(jiàn)的解決方案。 本篇文章將會(huì)介紹JWT鑒權(quán)和授權(quán)的原理、實(shí)現(xiàn)方式以及注意事項(xiàng)。 什么是JWT? JWT是一種基于JSON格式的開(kāi)放標(biāo)準(zhǔn)(RFC7519),用于在網(wǎng)絡(luò)

    2023年04月21日
    瀏覽(84)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包