2..NET8.0SDK
3.MicrosoftSQLServerExpress

  1. 了解REST

REST表示性狀態轉移是一種指導RESTful APIs開發的體系結構風格。

它在網絡上的計算機系統之間建立了標準化的通信,促進了無縫交互。REST在客戶端-服務器模型上運行,允許兩個應用程序獨立發展而不相互依賴

REST的關鍵屬性包括其無狀態,其中請求所需的所有信息都是在通信過程中傳達的,沒有服務器端會話狀態。REST確保組件之間有統一的接口,通過類似目錄結構的URI公開資源。

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

REST中的表示通常涉及傳輸JSON或XML來表達數據對象及其屬性。由于其簡單性,REST已經超越了基于SOAP的接口設計,對web開發產生了重大影響。

2.啟動Web API項目

啟動Visual Studio 2022并按照以下步驟創建新項目:

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

在下一個屏幕上:

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

目前,我們有一個啟動項目,如下所示:

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

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

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

3.合并模型

以下是在MovieModels文件夾中創建類的步驟:

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

Id字段是數據庫要求的主鍵字段。

實體框架核心

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

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

4.集成數據庫上下文

_database context_是協調數據模型實體框架功能的主要類。此類是從Microsoft派生而來的。EntityFrameworkCore。類。

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

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

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

依賴注入

依賴注入是ASP.NET中的一個基本概念.NET Core,框架圍繞它構建。在應用程序啟動期間,包括EF Core DB上下文在內的服務都通過依賴注入進行注冊。需要這些服務的組件通過構造函數參數接收這些服務。

5.使用遷移建立數據庫**

遷移使我們能夠構建一個鏡像數據模型的數據庫,并在數據模型發生修改時調整數據庫模式。

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

添加遷移初始值

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

更新數據庫

Update Database命令運行Migrations/{time stamp}_Initial.cs文件中的Up方法,該方法用于創建數據庫。

6.創建API控制器和方法

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

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

MovieController創建如下:

MoviesController類繼承自ControllerBase。

接下來,我們將通過控制器的構造函數注入上一節中提到的數據庫上下文。添加以下代碼:

GET方法

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

這些方法實現了兩個不同的GET端點:

  1. 獲取/api/電影

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

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

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

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

路由和URL路徑

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

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

測試GetMovie方法

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

后方法

將以下代碼添加到MoviesController

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

CreatedAtAction方法執行以下操作:

  1. 成功后發出HTTP 201狀態碼。HTTP 201是在服務器上建立新資源的HTTP POST方法的標準響應。
  2. 在響應后附加Location標頭,指定最近創建的電影記錄的URI
  3. 使用GetMovie動作為Location標頭制定URI

測試電影后期方法

啟動應用程序,然后在Movies部分選擇POST方法。

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

然后單擊Execute

響應狀態代碼為201(已創建),響應中添加了位置標頭,如下所示:

Put方法

將以下代碼添加到MoviesController

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

測試PutMovie方法

然后單擊Execute

我們也可以在數據庫中看到更新的信息:

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

DELETE方法

將以下代碼添加到MoviesController

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

測試DeleteMovie方法

啟動應用程序,然后在Movies部分選擇DELETE方法。

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

然后單擊執行。_

不需要為此操作提供請求體。響應狀態為204 No Content,表示刪除操作執行成功

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

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

感謝您的閱讀!!

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

上一篇:

如何逐步審核API

下一篇:

RepairShopr API:重大api更新!!
#你可能也喜歡這些API文章!

我們有何不同?

API服務商零注冊

多API并行試用

數據驅動選型,提升決策效率

查看全部API→
??

熱門場景實測,選對API

#AI文本生成大模型API

對比大模型API的內容創意新穎性、情感共鳴力、商業轉化潛力

25個渠道
一鍵對比試用API 限時免費

#AI深度推理大模型API

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

10個渠道
一鍵對比試用API 限時免費