本教程將提供有關(guān)使用 .NET Core 7 和最小 API 方法構(gòu)建 RESTful API 的實踐介紹。
.NET Core 和 ASP.NET Core 是用于創(chuàng)建強大的 RESTful API 的流行框架。在本教程中,我們將使用它來開發(fā)一個簡單的 Minimal API 來模擬信用評分。最小 API 提供了一種使用 ASP.NET Core 創(chuàng)建高性能 HTTP API 的簡化方法。它們允許您通過最少的設(shè)置和代碼輕松構(gòu)建完整的 REST 端點。您可以流暢地定義 API 路由和操作來簡化開發(fā)過程,而不是依賴傳統(tǒng)的腳手架和控制器。
我們將創(chuàng)建一個端點,允許用戶通過向 API 發(fā)送請求來檢索信用評分。我們還可以使用 POST 和 GET 方法保存和檢索信用評分。然而,值得注意的是,我們不會連接到任何現(xiàn)有的后端系統(tǒng)來獲取信用評分;相反,我們將使用隨機數(shù)生成器來生成分數(shù)并將其返回給用戶。盡管此 API 相對簡單,但它將演示使用 .NET Core 和 ASP.NET 進行 REST API 開發(fā)的基礎(chǔ)知識。
前提條件
在開始之前,我們必須確保完成以下幾個前提條件。要跟隨并運行本教程,你需要以下內(nèi)容:
.NET Core安裝
IDE或代碼編輯器
使用Postman測試我們的API端點
創(chuàng)建初始項目
我們將使用.NET cli工具來創(chuàng)建我們的初始項目。.NET 命令行界面提供了開發(fā)、構(gòu)建、運行和發(fā)布 .NET 應用程序的能力。
.NET cli new 命令提供了許多模板來創(chuàng)建項目。您還可以添加命令以從NuGet search 查找社區(qū)開發(fā)的模板或用于查看 Microsoft 提供的可用模板。dotnet new list
文章來源地址http://www.zghlxwxcb.cn/article/459.html
我們將創(chuàng)建一個最小的 API,并從盡可能干凈的狀態(tài)開始。我們將使用空的 ASP.NET Core 模板。在您選擇的目錄中;在終端中輸入以下內(nèi)容:
dotnet new web
您會注意到目錄結(jié)構(gòu)將如下所示:
我們將在文件中完成所有工作Program.cs。其起始代碼應類似于以下內(nèi)容:
var builder = WebApplication.CreateBuilder(args); var app = builder.Build(); app.MapGet("/", () => "Hello World!"); app.Run();
我們可以看到我們的起始代碼是多么簡潔和可讀。讓我們逐行分解模板提供的代碼:
該WebApplication.CreateBuilder(args)方法創(chuàng)建該類的一個新實例WebApplicationBuilder,用于配置和構(gòu)建該WebApplication實例。args 參數(shù)是一個可選的命令行參數(shù)數(shù)組,可以在運行時傳遞給應用程序。
builder.Build()調(diào)用該方法來創(chuàng)建該類的新實例WebApplication,該實例代表正在運行的應用程序。該實例配置應用程序、定義路由并處理請求。
第三行定義了使用該方法的應用程序的根路徑(“/”)的路由app.MapGet()。這意味著當請求根路徑時,應用程序?qū)⑹褂米址癏ello World!”進行響應。
我們通過調(diào)用該方法來啟動應用程序app.Run()。
使用構(gòu)建器模式,我們可以配置和自定義WebApplication實例。這使我們能夠以結(jié)構(gòu)化和可擴展的方式定義應用程序的行為,包括中間件、路由和其他設(shè)置。例如,WebApplication構(gòu)建器創(chuàng)建的實例可以被視為應用程序的“入口點”,它處理請求并生成響應。
總的來說,此代碼塊在 .NET 7 中創(chuàng)建了一個簡單的 Minimal API,它以“Hello World!”進行響應。請求應用程序的根路徑時的消息。
接下來,我們將自定義 API 來模擬檢索信用評分。
在代碼中添加
在 中Program.cs,我們將容納我們的端點和業(yè)務邏輯。我們將定義creditscore端點以提供 GET 和 POST 操作。我們將實施一個列表來存儲我們想要的任何信用評分。我們還將定義一個端點來檢索已保存的信用評分列表。我們將使用 CreditScore record,這是 C# 10 中類似于結(jié)構(gòu)的新引用類型。Arecord是一個輕量級且不可變的數(shù)據(jù)對象,針對比較和相等性檢查進行了優(yōu)化。
Program.cs使用以下代碼填充:
var builder = WebApplication.CreateBuilder(args); var app = builder.Build(); var userAddedCreditScores = new List<CreditScore>(); app.MapGet("/creditscore", () => { var score = new CreditScore ( Random.Shared.Next(300, 850) ); return score; }); app.MapPost("/creditscore", (CreditScore score) => { userAddedCreditScores.Add(score); return score; }); app.MapGet("/userAddedCreditScores", () => userAddedCreditScores); app.Run(); record CreditScore(int Score) { public string? CreditRating { get => Score switch { >= 800 => "Excellent", >= 700 => "Good", >= 600 => "Fair", >= 500 => "Poor", _ => "Bad" }; } }
如前所述,我們的代碼首先為 Web 應用程序創(chuàng)建一個構(gòu)建器對象,然后使用它來構(gòu)建應用程序?qū)嵗?。它還定義了一個record名為 的類型,該類型CreditScore具有一個名為 的單個屬性Score和一個名為 的只讀屬性CreditRating。這可能看起來有點奇怪,因為我們在使用記錄后定義了它。但是,這是由于命名空間造成的,并且record必須在命名空間之外定義WebApplication。
app.MapGet()該應用程序使用和方法公開多個端點app.MapPost()。第一個端點/creditscore是一個生成分數(shù)在 300 到 850 之間的GET新隨機對象的方法。我們將為同一端點定義一個方法,該方法接受請求正文中的對象,將其添加到名為 的列表中,并返回與調(diào)用者相同的對象。另一個端點是 GET 方法,它返回已添加到 的所有對象的列表。CreditScorePOSTCreditScoreuserAddedCreditScoresCreditScore/userAddedCreditScoresCreditScoreuserAddedCreditScores
最后,應用程序開始使用 運行app.Run()。
運行和測試 API
編寫好代碼后,運行以下命令來編譯并運行我們的項目:
dotnet run
該 API 現(xiàn)已投入使用并準備進行測試。運行前面的命令后,您將在控制臺中看到哪個端口已用于托管您的 API。Properties > launchSettings.json您可以通過編輯文件或添加編輯app.Run()命令來定義要使用的端口,Program.cs如下所示,將 3000 替換為所需的端口號:
app.Run("http://localhost:3000");
您可以使用 Postman 等工具向 API 發(fā)送 HTTP 請求。對我來說,獲得信用評分的終點是localhost:5242/creditscore。當您向此端點發(fā)送請求時,您應該收到200 OK狀態(tài)代碼、隨機數(shù)生成器生成的信用評分以及信用評級。
我們可以通過向端點發(fā)送 POST 請求來保存信用評分creditscore
。我們用一個對象構(gòu)成請求的主體CreditScore
。
最后,我們可以通過向端點發(fā)送 GET 請求來檢索所有添加的分數(shù)/userAddedCreditScores。
總結(jié)一下,我們使用.NET Core 7和ASP.NET開發(fā)了一個基本的RESTful最小API。
這段代碼可以為您的應用程序創(chuàng)建更復雜的API提供基礎(chǔ)。隨著您繼續(xù)開發(fā)API,您可能希望考慮實施安全措施,如API密鑰、與API網(wǎng)關(guān)集成、監(jiān)控API的使用情況或通過API的變現(xiàn)來產(chǎn)生收入。
文章來源:http://www.zghlxwxcb.cn/article/459.html
到此這篇關(guān)于使用.NET Core 7構(gòu)建一個簡潔的RESTful Minimal API的文章就介紹到這了,更多相關(guān)內(nèi)容可以在右上角搜索或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!