前言
C# Web API 是一種基於 .NET 平臺(包括但不限於.NET Framework 和 .NET Core)構建 HTTP 服務的框架,用於創建 RESTful Web 服務。REST(Representational State Transfer)是一種軟件架構風格,它利用HTTP協議的特性(如GET、POST、PUT、DELETE等方法)來操作資源。
在 C# 中,ASP.NET Web API 提供了一種模式和工具集,使得開發者能夠方便地設計和實現對外暴露的API接口,這些接口可以被各種客戶端應用程序(如Web瀏覽器、移動應用、桌面應用或其他服務器端應用)通過HTTP請求來調用,進而獲取或修改數據。
使用 ASP.NET Web API 的特點和優勢包括:
(1)模塊化與分離關注點:控制器(Controllers)負責處理HTTP請求,模型(Models)代表業務對象,視圖模型(ViewModels)可以用來適配不同客戶端的數據需求,以及路由機制(Routes)將URL映射到特定的操作。
(2)RESTful 架構支持:它鼓勵開發人員遵循 REST 設計原則,提供資源導向的服務,允許客戶端通過標準HTTP方法訪問資源。
(3)跨平臺兼容性:尤其是在 .NET Core 上,Web API 可以運行在Windows、Linux 和 macOS 等多種操作系統之上。
(4)內容協商與格式化器:Web API 自動處理不同客戶端要求的數據格式,例如JSON、XML或其他自定義格式。
(5)安全性與認證授權:內置了對OAuth、JWT等多種安全策略的支持,以便實施靈活且安全的API訪問控制。
(6)測試友好:由於其基於HTTP,Web API 容易進行單元測試和集成測試,並且可以配合Postman、Swagger等工具進行接口文檔生成和測試。
(7)擴展性:Web API 具有高度可擴展性,可以通過中間件、過濾器等方式增強功能,適應複雜的企業級應用需求。
今天小編就將爲大家介紹一下如何使用C#在葡萄城公司的企業級低代碼平臺——活字格進行接口擴展。
活字格中的Web API
在活字格中,支持使用C#或VB.Net語言實現,可以運行在服務端,瀏覽器可以通過HTTP請求的方式調用服務端提供的Web API。
環境準備
編譯器:Visual Studio、Visual Studio Code、IntelliJ IDEA Rider etc...(選擇自己喜歡的即可);
依賴環境:系統需要安裝Dot Net 6.0運行環境(下載請戳);
使用語言:C#或VB.Net;
其他:C#基礎知識及編程能力。
創建服務端Web API
1、打開編譯器,這裏使用的是IntelliJ IDEA Rider,選擇Class Library(類庫),Framework選擇net6.0。如下圖:
2、選擇完成後,點擊"Create"創建類庫項目,一個新建的類庫項目就創建完成了。
3、接下來因爲創建的是活字格的Web API,所以我們需要添加活字格的類庫引用,用於與活字格進行交互和編程擴展。在新建的項目中選擇"Dependencies"右鍵選擇"Reference"添加引用。
4、點擊"Add From"從活字格的安裝路徑下引用"GrapeCity.Forguncy.ServerApi.dll"文件,這裏需要注意的是:
- 如果安裝活字格服務端時,安裝目錄爲默認目錄,則此文件的路徑爲:C:\Program Files\ForguncyServer\Website\bin
- 如果安裝活字格服務端時,安裝目錄爲自定義路徑,則此文件的路徑爲"自定義路徑\ForguncyServer\Website\bin"
5、添加成功後,右鍵項目,選擇"Edit"——"Edit xxx.csproj"。
6、在打開的csproj文件中添加下面代碼並保存:
<ItemGroup>
<FrameworkReference Include="Microsoft.AspNetCore.App" />
</ItemGroup>
以上我們就完成了基本的準備工作,接下來爲大家介紹Web API的編寫和使用。
編寫服務端Web API
爲了說明清楚,這裏列舉一個示例,示例的功能爲用Web API可以接收標準化JSON數據。
1、創建一個public class,使其從GrapeCity.Forguncy.ServerApi命名空間的ForguncyApi類繼承。
2、當通過HTTP的GET或POST調用方法時,可以通過ServerApi的Context屬性獲取請求的詳細信息。Context屬性是Asp.net Core的HttpContext類型,通過Request屬性可以獲取HTTP請求的全部信息。我們的示例中使用的是POST方法,所以我們新建一個Task方法,並用"[Post]"註解。
3、接下來,我們就可以在方法中書寫自己的邏輯了,這裏我們的代碼具體如下,爲了讓活字格命令可以直接接收數組JSON數據,邏輯爲當請求我們這個Web API時,會先從請求地址上拿到要調用的服務端命令名稱,把標準化的數組JSON數據包了一層,包成了參數爲"data"新的一個JSON數據,這樣調用的服務端命令就可以使用data參數接收數組JSON參數了。具體在活字格中的使用後面會介紹。
using System.Text;
using System.Text.Json;
using GrapeCity.Forguncy.ServerApi;
namespace MyApiTest;
public class RequestBodyHandler : ForguncyA
{
[Post]
public async Task ReceiveApiRequest()
{
var request = Context.Request;
var serverCommandName = request.Query["serverCommandName"]; // 從URL中取參數
if (request.ContentType != null && request.ContentType.Equals("application/json"))
{
var sr = new StreamReader(request.Body);
string content = await sr.ReadToEndAsync();
var obj = new { data = content };
string newContent = JsonSerializer.Serialize(obj).Replace("/r/n", "");
using HttpClient httpClient = new HttpClient();
var baseAddress = $"{request.Scheme}://{request.Host}{request.PathBase}/ServerCommand/{serverCommandName}";
HttpContent httpContent = new StringContent(newContent, Encoding.UTF8, "application/json");
HttpResponseMessage responseMessage = await httpClient.PostAsync(baseAddress, httpContent);
if (responseMessage.IsSuccessStatusCode)
{
await responseMessage.Content.ReadAsStringAsync();
}
else
{
throw new Exception($"Error: {responseMessage.StatusCode}");
}
}
else
{
throw new HttpRequestException("ContentType error, please check request content!");
}
}
}
4、書寫完成我們需要的邏輯後,右鍵項目點擊"Build Selected Projects"進行項目Build打包。
5、完成Build打包後,在剛纔我們新建類庫項目的目錄下,找到生成的dll文件。
6、打開活字格設計器,上傳我們打包的dll文件到活字格工程中,可以看到,上傳dll後,API列表中會顯示Web API的請求地址。
7、接下來,回到我們的活字格設計器工程中,我們新建一個服務端命令,服務端命令的名稱命名爲"RedirectCommand",並設置一個參數值爲"data",然後用返回命令將接收的數據保存到表裏。注意:服務端命令需要設置爲任何人可調用。
8、這裏我們藉助API調試工具向剛纔我們創建的Web API發送一個請求,先將活字格工程本地運行起來,Web API的調用URL如下:
http://域名或主機名/應用程序名/類名/方法名
例如:http://www.xxx.com/CRM/customapi/sampleapi/addsampledata
我們運行的是本地服務,所以可以使用localhost進行測試,如下圖:
9、發送請求,可以發現,活字格中已經將產生的數據接收到並保存到了數據表中。
以上,我們利用Web API對數據進行了“預處理”,轉發給了活字格中的服務端命令中,在活字格服務端命令中就可以進一步處理這種數組JSON數據啦。
調試服務端Web API
編碼當然離不開調試,當然了,Web API也不例外,接下來就爲大家介紹調試的方式方法。
1、首先需要先運行上傳了打包完成的Web API dll文件的活字格工程。
2、可以看到本地服務會有一個唯一端口號,回到我們的編譯器中,選擇"Run"——"Attach to Process"附加到進程。
3、搜索剛纔活字格本地服務的端口號,點擊附加到進程。
4、然後在代碼左側打斷點即可。
5、當觸發Web API的調用後,就可以看到代碼已經可以進行調試了。
修改代碼後再次調試
代碼很難一次編寫地完全正確,如果修改代碼,需要執行以下步驟:
- 修改代碼。
- 編譯工程。
- 在活字格設計器中刪除之前的dll文件。
- 上傳新的dll文件。
- 運行活字格應用程序。
- 通過編譯器的“調試->附加到進程”重新附加到ForguncyServerConsole.exe進程上。
- 打斷點調試。
- 如果還需要修改代碼回到第一步,直到修正所有問題。
最後附上完整的代碼工程文件:https://gitee.com/GrapeCity/my-api-test
總結
以上就是使用C#創建活字格服務端Web API的全過程,如果您想了解更多信息,歡迎點擊這裏查看。
擴展鏈接:
如何使用 Blazor 框架在前端瀏覽器中導入/導出 Excel XLSX