
如何獲取 Seeed 開放平臺 API Key 密鑰(分步指南)
2..NET8.0SDK
3.MicrosoftSQLServerExpress
REST或表示性狀態轉移是一種指導RESTful APIs開發的體系結構風格。
它在網絡上的計算機系統之間建立了標準化的通信,促進了無縫交互。REST在客戶端-服務器模型上運行,允許兩個應用程序獨立發展而不相互依賴
REST的關鍵屬性包括其無狀態,其中請求所需的所有信息都是在通信過程中傳達的,沒有服務器端會話狀態。REST確保組件之間有統一的接口,通過類似目錄結構的URI公開資源。
REST中的表示通常涉及傳輸JSON或XML來表達數據對象及其屬性。由于其簡單性,REST已經超越了基于SOAP的接口設計,對web開發產生了重大影響。
2.啟動Web API項目
啟動Visual Studio 2022并按照以下步驟創建新項目:
在下一個屏幕上:
目前,我們有一個啟動項目,如下所示:
在Program.cs文件中,您將觀察到Swagger支持已自動集成到我們的項目中。
有關Swagger的更多信息,請參閱ASP.NET核心Web API文檔以及Swagger/OpenAPI
您觀察到的結果值是由WeatherForecastController中的GET方法生成的。
3.合并模型
以下是在MovieModels文件夾中創建類的步驟:
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端點:
獲取/api/電影
獲取/api/電影/{id}
https://localhost:{port}/api/電影
GetMovie方法的返回類型為ActionResult<T>。ASP。NET Core會自動將對象序列化為JSON,并將JSON嵌入到響應消息的正文中。如果沒有未處理的異常,則此返回類型的響應代碼為200。任何未處理的異常都會轉換為5xx錯誤。
路由和URL路徑
每個方法的URL路徑按以下方式組裝:
測試GetMovie方法
GoSQL Server對象資源管理器,右鍵單擊Movies表并選擇View Data:
將以下代碼添加到MoviesController:
PostMovie方法負責在數據庫中生成電影記錄。代碼片段表示一個HTTP**POST方法,如[HttpPost]屬性所示。此方法從HTTP**請求的正文中檢索電影記錄的值。
CreatedAtAction方法執行以下操作:
測試電影后期方法
啟動應用程序,然后在Movies部分選擇POST方法。
單擊嘗試,然后在請求正文中輸入要添加的電影信息:
然后單擊Execute。
響應狀態代碼為201(已創建),響應中添加了位置標頭,如下所示:
將以下代碼添加到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