2..NET8.0SDK
3.MicrosoftSQLServerExpress

  1. 了解REST

REST表示性狀態(tài)轉(zhuǎn)移是一種指導(dǎo)RESTful APIs開發(fā)的體系結(jié)構(gòu)風(fēng)格。

它在網(wǎng)絡(luò)上的計(jì)算機(jī)系統(tǒng)之間建立了標(biāo)準(zhǔn)化的通信,促進(jìn)了無縫交互。REST在客戶端-服務(wù)器模型上運(yùn)行,允許兩個應(yīng)用程序獨(dú)立發(fā)展而不相互依賴

REST的關(guān)鍵屬性包括其無狀態(tài),其中請求所需的所有信息都是在通信過程中傳達(dá)的,沒有服務(wù)器端會話狀態(tài)。REST確保組件之間有統(tǒng)一的接口,通過類似目錄結(jié)構(gòu)的URI公開資源。

  1. GET:檢索特定資源(通過id)或資源集合。
  2. POST:創(chuàng)建一個新資源。
  3. PUT:更新特定資源(按id)。
  4. DELETE:按id刪除特定資源。

REST中的表示通常涉及傳輸JSON或XML來表達(dá)數(shù)據(jù)對象及其屬性。由于其簡單性,REST已經(jīng)超越了基于SOAP的接口設(shè)計(jì),對web開發(fā)產(chǎn)生了重大影響。

2.啟動Web API項(xiàng)目

啟動Visual Studio 2022并按照以下步驟創(chuàng)建新項(xiàng)目:

  1. 打開Visual Studio 2022。
  2. 選擇“創(chuàng)建新項(xiàng)目”。
  3. 在“創(chuàng)建新項(xiàng)目”窗口中,搜索ASP.NET核心Web API
  4. 選擇ASP.NET核心Web API作為項(xiàng)目模板。
  5. 單擊下一步按鈕繼續(xù)。

在下一個屏幕上:

  1. 選擇。NET 8.0作為您項(xiàng)目的目標(biāo)框架。
  2. 單擊創(chuàng)建按鈕開始創(chuàng)建您的ASP.NET核心Web API項(xiàng)目使用指定的框架版本。

目前,我們有一個啟動項(xiàng)目,如下所示:

Program.cs文件中,您將觀察到Swagger支持已自動集成到我們的項(xiàng)目中。

有關(guān)Swagger的更多信息,請參閱ASP.NET核心Web API文檔以及Swagger/OpenAPI

您觀察到的結(jié)果值是由WeatherForecastController中的GET方法生成的。

3.合并模型

以下是在MovieModels文件夾中創(chuàng)建類的步驟:

  1. 在解決方案資源管理器中,右鍵單擊項(xiàng)目。
  2. 選擇添加->新建文件夾,并將文件夾命名為模型。
  3. 右鍵單擊新創(chuàng)建的Models文件夾。
  4. 選擇添加->。
  5. 將類命名為Movie.cs,然后單擊“添加”。

Id字段是數(shù)據(jù)庫要求的主鍵字段。

實(shí)體框架核心

我們將使用我們的模型與Entity Framework Core**(EF Core)**一起使用數(shù)據(jù)庫。

EF Core是一個對象關(guān)系映射(ORM)框架,簡化了數(shù)據(jù)訪問代碼。模型類不依賴于EF Core。它們只是定義將存儲在數(shù)據(jù)庫中的數(shù)據(jù)的屬性。

4.集成數(shù)據(jù)庫上下文

_database context_是協(xié)調(diào)數(shù)據(jù)模型實(shí)體框架功能的主要類。此類是從Microsoft派生而來的。EntityFrameworkCore。類。

上面的代碼建立了一個代表實(shí)體集的DbSet<Movie>屬性。在Entity Framework語言中,實(shí)體集通常與數(shù)據(jù)庫表對齊,實(shí)體對應(yīng)于該表中的單個行。

連接字符串的名稱是通過對DbContextOptions對象的方法調(diào)用提供給上下文的。在本地開發(fā)過程中,ASP.NET Core配置系統(tǒng)appsettings.json文件中檢索連接字符串。

我們需要將連接字符串添加到appsettings.json中。我將在我的機(jī)器上使用本地SQL server實(shí)例,我們可以按如下方式定義連接字符串:

依賴注入

依賴注入是ASP.NET中的一個基本概念.NET Core,框架圍繞它構(gòu)建。在應(yīng)用程序啟動期間,包括EF Core DB上下文在內(nèi)的服務(wù)都通過依賴注入進(jìn)行注冊。需要這些服務(wù)的組件通過構(gòu)造函數(shù)參數(shù)接收這些服務(wù)。

5.使用遷移建立數(shù)據(jù)庫**

遷移使我們能夠構(gòu)建一個鏡像數(shù)據(jù)模型的數(shù)據(jù)庫,并在數(shù)據(jù)模型發(fā)生修改時調(diào)整數(shù)據(jù)庫模式。

打開Tools->NuGet包管理器>包管理器控制臺(PMC),并在PMC中運(yùn)行以下命令:

添加遷移初始值

AddMigration命令生成用于建立初始數(shù)據(jù)庫模式的代碼,該模式源自MovieContext類中概述的模型。Initial參數(shù)是遷移名稱,可以使用任何名稱。

更新數(shù)據(jù)庫

Update Database命令運(yùn)行Migrations/{time stamp}_Initial.cs文件中的Up方法,該方法用于創(chuàng)建數(shù)據(jù)庫。

6.創(chuàng)建API控制器和方法

讓我們先添加控制器。右鍵單擊Controller文件夾,然后選擇Add->Controller。.,然后選擇API控制器-空,如下所示:

單擊Add,在下一個屏幕上為控制器命名。

MovieController創(chuàng)建如下:

MoviesController類繼承自ControllerBase。

接下來,我們將通過控制器的構(gòu)造函數(shù)注入上一節(jié)中提到的數(shù)據(jù)庫上下文。添加以下代碼:

GET方法

GetMovies方法檢索所有電影,而GetMovie(int id)方法返回具有指定id的電影作為輸入。兩者都用[HttpGet]屬性標(biāo)記,表示它們對HTTP GET請求的響應(yīng)。

這些方法實(shí)現(xiàn)了兩個不同的GET端點(diǎn):

  1. 獲取/api/電影

  2. 獲取/api/電影/{id}

  3. https://localhost:{port}/api/電影

  4. https://localhost:{port}/api/電影/{id

GetMovie方法的返回類型為ActionResult<T>。ASP。NET Core會自動將對象序列化為JSON,并將JSON嵌入到響應(yīng)消息的正文中。如果沒有未處理的異常,則此返回類型的響應(yīng)代碼為200。任何未處理的異常都會轉(zhuǎn)換為5xx錯誤。

路由和URL路徑

每個方法的URL路徑按以下方式組裝:

  1. 從控制器的路由屬性(路由(“api/[controller]”)中的模板字符串開始。
  2. 按照不帶controller后綴的控制器類名的約定,將模板中的[controller]替換為控制器的名稱。在這種情況下,控制器類名是MoviesController,因此控制器名稱是movies。
  3. _ASP。NET Core_routingi不區(qū)分大小寫。

測試GetMovie方法

GoSQL Server對象資源管理器,右鍵單擊Movies表并選擇View Data

后方法

將以下代碼添加到MoviesController

PostMovie方法負(fù)責(zé)在數(shù)據(jù)庫中生成電影記錄。代碼片段表示一個HTTP**POST方法,如[HttpPost]屬性所示。此方法從HTTP**請求的正文中檢索電影記錄的值。

CreatedAtAction方法執(zhí)行以下操作:

  1. 成功后發(fā)出HTTP 201狀態(tài)碼。HTTP 201是在服務(wù)器上建立新資源的HTTP POST方法的標(biāo)準(zhǔn)響應(yīng)。
  2. 在響應(yīng)后附加Location標(biāo)頭,指定最近創(chuàng)建的電影記錄的URI
  3. 使用GetMovie動作為Location標(biāo)頭制定URI。

測試電影后期方法

啟動應(yīng)用程序,然后在Movies部分選擇POST方法。

單擊嘗試,然后在請求正文中輸入要添加的電影信息:

然后單擊Execute。

響應(yīng)狀態(tài)代碼為201(已創(chuàng)建),響應(yīng)中添加了位置標(biāo)頭,如下所示:

Put方法

將以下代碼添加到MoviesController

PutMovie方法旨在使用數(shù)據(jù)庫中提供的Id修改電影記錄。代碼片段表示一個HTTP**PUT方法,由[HttpPut]屬性標(biāo)記。此方法從HTTP請求的主體中提取電影記錄的值。在請求URL和正文中都提供Id是至關(guān)重要的,并且它們必須對齊。根據(jù)HTTP規(guī)范,PUT**請求要求客戶端傳輸完整的更新實(shí)體,而不僅僅是更改。

測試PutMovie方法

然后單擊Execute。

我們也可以在數(shù)據(jù)庫中看到更新的信息:

如果我們嘗試更新數(shù)據(jù)庫中不存在的記錄,我們會得到404 not Found錯誤:

DELETE方法

將以下代碼添加到MoviesController

DeleteMovie方法旨在從數(shù)據(jù)庫中刪除具有指定Id的電影記錄。代碼片段表示一個HTTP**DELETE方法,由[HttpDelete**]屬性表示。此方法預(yù)期URL中存在Id,以精確定位要刪除的電影記錄。

測試DeleteMovie方法

啟動應(yīng)用程序,然后在Movies部分選擇DELETE方法。

單擊嘗試,并在Id字段中輸入要刪除的電影的Id

然后單擊執(zhí)行。_

不需要為此操作提供請求體。響應(yīng)狀態(tài)為204 No Content,表示刪除操作執(zhí)行成功

我們也可以從數(shù)據(jù)庫中檢查記錄是否已刪除:

完整的源代碼可以在這里找到:

感謝您的閱讀!!

原文鏈接:https://medium.[com](http://www.dlbhg.com/provider/uid20241115192306ea69b0)/@chandrashekharsingh25/build-a-restful-web-api-with-net-8-44fc93b36618

上一篇:

如何逐步審核API

下一篇:

如何使用 node.js 和 express 創(chuàng)建 rest api
#你可能也喜歡這些API文章!

我們有何不同?

API服務(wù)商零注冊

多API并行試用

數(shù)據(jù)驅(qū)動選型,提升決策效率

查看全部API→
??

熱門場景實(shí)測,選對API

#AI文本生成大模型API

對比大模型API的內(nèi)容創(chuàng)意新穎性、情感共鳴力、商業(yè)轉(zhuǎn)化潛力

25個渠道
一鍵對比試用API 限時免費(fèi)

#AI深度推理大模型API

對比大模型API的邏輯推理準(zhǔn)確性、分析深度、可視化建議合理性

10個渠道
一鍵對比試用API 限時免費(fèi)