.NET 幫助

OData C#(開發人員如何運作)

發佈 2024年8月13日
分享:

開放數據協定 (OData) 簡化了在 Microsoft .NET 開發中構建和使用 RESTful API。它提供了一種標準化的方法來通過熟悉的 CRUD 查詢和操作數據。 (建立, 讀取, 更新, 刪除) 操作。本文章探討 Open Data Protocol 如何在 .NET 中簡化 API 開發,提供範例並彰顯其主要優點。如需進一步瞭解 OData,您可以查看 原始碼 在GitHub上的OData C#。

OData C#(適用於開發人員的工作原理):圖1 - OData C# - 資料存取協定

介紹

OData 遵循標準實踐來構建 RESTful 網路 API,使用類似 GET 和 POST 這樣的 URL 和 HTTP 動詞來定義操作。它使用實體數據模型(Entity Data Model)來表示數據。 (電子郵件行銷) 以及用於消息編碼的 JSON 或 AtomPub。雖然 OData 比 GraphQL 簡化了 API 開發,但它可能提供較少的高級功能。

OData C#(對開發人員的工作原理):圖2 - OData

使用 OData 在 .NET 中的優點

  • 標準化: OData 強制執行一致的方法來定義實體數據模型、處理請求和格式化響應。這減少了開發的複雜性並簡化了客戶端應用程序的集成。
  • 豐富的查詢功能: OData 支持一種統一的數據查詢方式來執行CRUD操作和過濾。 ($filter)排序 (升序/ 降序)($orderby),分頁 ($top,$skip) 功能,允許客戶高效地檢索特定數據集。
  • 改進的開發者體驗: OData 的 .NET 庫簡化了 API 的開發。開發者可以利用預構建的元件來處理路由、查詢處理和數據序列化,從而減少代碼重複和開發時間。
  • 互操作性: 符合 OData 的各種平台客戶端可以無縫地與基於 .NET 的 OData 服務交互,促進更廣泛的應用集成。

開始使用 OData in the .NET Framework

.NET 的 OData 函式庫提升了開發者經驗,通過促進有效的方法來操作資料集。它簡化了在 .NET 開發中建立和使用 RESTful API。它提供了一種標準化的方法,通過熟悉的 CRUD 操作來查詢和操作資料。 (建立, 讀取, 更新, 刪除).

在 .NET 專案中設定 OData

首先在 Visual Studio 中打開您的新專案。然後,導航到解決方案總管,右鍵點擊您的專案,選擇"管理 NuGet 套件"。在這裡,搜索 Microsoft.AspNetCore.OData 並安裝它。目前的 OData 版本是 8.2.5。

要在 NuGet 套件管理器控制台中安裝 OData,請使用以下命令。

Install-Package Microsoft.AspNetCore.OData
Install-Package Microsoft.AspNetCore.OData
IRON VB CONVERTER ERROR developers@ironsoftware.com
VB   C#

OData C#(它對開發人員的工作方式):圖 3 - 安裝 OData

範例:在 ASP.NET Core 中創建 OData 服務

讓我們在 ASP.NET Core 應用程式中創建一個簡單的 OData 模型類別。以下代碼中的類別將公開一個可以使用 OData 語法查詢的服務列表。

public class Service
{
    public int Id { get; set; } 
    public string FirstName { get; set; }
    public decimal Price { get; set; }
}
public class Service
{
    public int Id { get; set; } 
    public string FirstName { get; set; }
    public decimal Price { get; set; }
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
VB   C#

代碼說明

ODataModelBuilder 類別代表 C# 中用來管理服務的基本數據結構。它包含三個屬性: Id:服務的整數標識符。 FirstName:表示與服務相關聯的名字的字符串。 Price:表示服務價格的十進制值。 這個類別可以用作在 .NET 開發中創建更復雜的服務相關功能的構建塊。根據情況,我們也可以使用集合屬性或導覽屬性。

這是如何在 Visual Studio 的 ASP.NET Core 應用程式中設置 OData 控制器,以通過標準化的 OData 端點公開服務列表。以下示例演示了使用靜態服務列表並在 Web API 中啟用 OData 查詢功能的基本實現方式:

using DemoOData.Models;
using Microsoft.AspNetCore.Mvc;
using Microsoft.AspNetCore.OData.Query;
using Microsoft.AspNetCore.OData.Routing.Controllers;
namespace DemoOData.Controllers
{
    [Route("odata/[controller]")]
    public class ServiceController : ODataController
    {
        private static readonly List<Service> Products = new List<Service>
        {
            new Service { Id = 1, FirstName = "Laptop", Price = 6239.9M },
            new Service { Id = 2, FirstName= "Smartphone", Price = 2585.9M }
        };
        [HttpGet]
        [EnableQuery]
        public IActionResult Get() => Ok(Products);
    }
}
using DemoOData.Models;
using Microsoft.AspNetCore.Mvc;
using Microsoft.AspNetCore.OData.Query;
using Microsoft.AspNetCore.OData.Routing.Controllers;
namespace DemoOData.Controllers
{
    [Route("odata/[controller]")]
    public class ServiceController : ODataController
    {
        private static readonly List<Service> Products = new List<Service>
        {
            new Service { Id = 1, FirstName = "Laptop", Price = 6239.9M },
            new Service { Id = 2, FirstName= "Smartphone", Price = 2585.9M }
        };
        [HttpGet]
        [EnableQuery]
        public IActionResult Get() => Ok(Products);
    }
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
VB   C#

代碼描述

提供的代碼在一個ASP.NET Core應用中定義了一個名為ServiceController的ODataController,這使得可以使用OData協議查詢和操作數據。它將請求路由到"odata/Service",並提供一個靜態的Service物件列表,包括一台筆記型電腦和一部智能手機。裝飾有的Get方法 [啟用查詢]允許客戶執行 OData 查詢 (篩選、排序、分頁) 在產品列表上,將結果作為IActionResult返回以處理HTTP GET請求。

在Program.cs中註冊OData服務

要將OData集成到.NET 6應用程序中,我們需要安裝和配置必要的OData套件。這涉及定義OData模型、設置OData中介軟件以及配置服務以支持OData功能,例如篩選、排序和展開。

using DemoOData.Models;
using Microsoft.AspNetCore.OData;
using Microsoft.OData.Edm;
using Microsoft.OData.ModelBuilder;
var builder = WebApplication.CreateBuilder(args);
// Add services to the container.
builder.Services.AddControllers();
// Learn more about configuring Swagger/OpenAPI at https://aka.ms/aspnetcore/swashbuckle
builder.Services.AddEndpointsApiExplorer();
builder.Services.AddSwaggerGen();
static IEdmModel GetEdmModel()
{
    ODataConventionModelBuilder builder = new ODataConventionModelBuilder();
    builder.EntitySet<Service>("Services");
    return builder.GetEdmModel();
}
builder.Services.AddControllers()
    .AddOData(options => options
        .AddRouteComponents("odata", GetEdmModel())
        .Select()
        .Filter()
        .OrderBy()
        .SetMaxTop(20)
        .Count()
        .Expand()
    );
using DemoOData.Models;
using Microsoft.AspNetCore.OData;
using Microsoft.OData.Edm;
using Microsoft.OData.ModelBuilder;
var builder = WebApplication.CreateBuilder(args);
// Add services to the container.
builder.Services.AddControllers();
// Learn more about configuring Swagger/OpenAPI at https://aka.ms/aspnetcore/swashbuckle
builder.Services.AddEndpointsApiExplorer();
builder.Services.AddSwaggerGen();
static IEdmModel GetEdmModel()
{
    ODataConventionModelBuilder builder = new ODataConventionModelBuilder();
    builder.EntitySet<Service>("Services");
    return builder.GetEdmModel();
}
builder.Services.AddControllers()
    .AddOData(options => options
        .AddRouteComponents("odata", GetEdmModel())
        .Select()
        .Filter()
        .OrderBy()
        .SetMaxTop(20)
        .Count()
        .Expand()
    );
IRON VB CONVERTER ERROR developers@ironsoftware.com
VB   C#

代碼描述

這段代碼在 .NET 6 應用程序中配置 OData 支援。首先,它引入必要的命名空間並創建一個 WebApplicationBuilder 實例。GetEdmModel 方法使用 ODataConventionModelBuilder 定義 OData 模型,該模型指定服務實體的實體集。然後調用 AddOData 方法來配置 OData 服務,包括啟用 select、filter、order by、count、expand,並設置查詢結果的最大 top 值為 20。此設置確保應用程序可以有效地處理 OData 查詢。

AddOData() 方法使用 GetEdmModel() 方法,該方法檢索用於查詢的數據模型,形成 OData 服務的基礎。此服務使用稱為實體數據模型的抽象數據模型 (電子郵件行銷) 定義暴露的數據。ODataConventionModelBuilder 類透過預設的命名慣例生成 EDM,從而將代碼需求降至最低。或者,開發者可以使用 ODataModelBuilder 類來對 EDM 進行更多控制。

程式碼的截圖

OData C#(開發者如何使用):圖4 - Visual Studio中的代碼

運行服務

運行服務後,您可以使用各種 OData 查詢選項來查詢服務,例如:

https://localhost:7131/odata/Service
https://localhost:7131/odata/Service
IRON VB CONVERTER ERROR developers@ironsoftware.com
VB   C#

程式輸出

OData C#(開發人員如何工作):圖5 - OData 服務輸出

IronPDF介紹

IronPDF是一個全面的C#庫,旨在簡化 創建, 操作,和 渲染 在 .NET 應用程序中處理 PDF 文件。它提供廣泛的功能,包括從 HTML、CSS、圖像和 JavaScript 生成 PDF 的能力,使開發人員能夠輕鬆地將網頁內容轉換為高質量的 PDF 文件。憑藉其直觀的 API 和強大的渲染引擎,IronPDF 使開發人員能夠簡化 PDF 生成過程,輕鬆將動態文件生成功能集成到他們的應用程序中。

OData C#(對開發者的運作方式):圖6 - IronPDF

將 IronPDF 添加到專案中

要在 Visual Studio 中安裝 IronPDF,請導航至 NuGet 套件管理控制台,並使用以下命令。

Install-Package IronPdf
Install-Package IronPdf
'INSTANT VB TODO TASK: The following line uses invalid syntax:
'Install-Package IronPdf
VB   C#

生成 PDF

要在 .NET 應用程式中從 HTML 內容生成 PDF 文件,我們可以使用像 DinkToPdf 或類似庫中的 ChromePdfRenderer 類。此範例演示如何創建包含員工記錄詳細信息的 PDF。

public record Employee (string FirstName, string LastName);
class Program
{
    static void Main(string[] args)
    {
        var employee= new Employee("Iron", "Developer");
        var renderer = new ChromePdfRenderer();
        var pdf = renderer.RenderHtmlAsPdf($"<h1>Person Record</h1><p>Name: {person.FirstName} {person.LastName}</p>");
        pdf.SaveAs("PersonRecord.pdf");
    }
}
public record Employee (string FirstName, string LastName);
class Program
{
    static void Main(string[] args)
    {
        var employee= new Employee("Iron", "Developer");
        var renderer = new ChromePdfRenderer();
        var pdf = renderer.RenderHtmlAsPdf($"<h1>Person Record</h1><p>Name: {person.FirstName} {person.LastName}</p>");
        pdf.SaveAs("PersonRecord.pdf");
    }
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
VB   C#

這個範例創建了一個簡單的 Employee 記錄,然後使用 IronPDF 生成一個顯示此人姓名的 PDF 文件。它展示了 C# 記錄如何無縫地與 .NET 應用程式中的 PDF 生成集成。

OData C#(它對開發人員的工作原理):圖7 - PDF 輸出

結論

OData 通過提供標準化的查詢和操作功能,簡化了在 .NET 中開發和使用 RESTful API 的過程。我們還可以將其與 Entity Framework 集成,通過簡化數據訪問和管理來提高開發效率。OData 通過其豐富的查詢功能和改進的開發者體驗,簡化了 API 開發,實現了跨各種平台的無縫集成和互操作性。至於 IronPDF 全面的功能和支持。

< 上一頁
StyleCop C#(它如何為開發者工作)
下一個 >
IdentityServer .NET(對開發者的作用)

準備開始了嗎? 版本: 2024.10 剛剛發布

免費 NuGet 下載 總下載次數: 10,993,239 查看許可證 >