.NET 幫助

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

發佈 2024年8月13日
分享:

開放數據協定(OData)簡化了在 Microsoft .NET 開發中建立和使用 RESTful API。 它提供了一种通过熟悉的 CRUD 操作查询和处理数据的标准化方法。(建立, 讀取, 更新, 刪除)運作。 本文探討了開放數據協議如何在 .NET 中精簡 API 開發,並提供示例和突出其主要優勢。 若要進一步了解 OData,您可以查看OData C# GitHub 儲存庫源代码。

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

介紹

OData 遵循標準慣例來構建 RESTful 網路 API,使用像 GET 和 POST 這樣的 URL 和 HTTP 動詞來定義操作。 它使用實體資料模型表示資料(電子郵件行銷)和 JSON 或 AtomPub 用於消息編碼。 雖然OData相較於GraphQL簡化了API開發,但可能提供較少的進階功能。

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

在 .NET 中使用 OData 的好處

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

入門使用 .NET Framework 中的 OData

.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」,並提供包括筆記型電腦和智能手機在內的靜態服務物件列表。 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 模型,該模型為 Service 實體指定了一個實體集。 然後呼叫 AddOData 方法來配置 OData 服務,包括啟用 select、filter、order by、count、expand 並設定查詢結果的最大 top 值為 20。 此設定確保應用程式能夠有效處理OData查詢。

添加OData()方法使用 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# 程式庫,旨在簡化製作 PDF 文件的過程。將文件轉換為PDF, PDF頁面的分割,和從 PDF 中刪除頁面在 .NET 應用程式中。 它提供了廣泛的功能,包含從 HTML、CSS、圖片和 JavaScript 生成 PDF 的能力,使開發人員能夠輕鬆地將網頁內容轉換成高品質的 PDF 文件。 IronPDF 的直觀 API 與強大的渲染引擎,使開發者能夠簡化 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: {employee.FirstName} {employee.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: {employee.FirstName} {employee.LastName}</p>");
        pdf.SaveAs("PersonRecord.pdf");
    }
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
VB   C#

此範例建立一個簡單的員工記錄,然後使用 IronPDF 生成一個顯示該人姓名的 PDF 文件。 它展示了 C# 記錄如何無縫整合到 .NET 應用中的 PDF 生成。

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

結論

OData 透過提供標準化的查詢和操作功能,簡化了在 .NET 中開發和使用 RESTful API 的過程。 我們也可以將其與 Entity Framework 集成,通過簡化資料存取和管理來提高開發效率。 OData 精簡了 API 開發,通過其豐富的查詢功能和提升的開發者體驗,實現了在各個平台上的無縫整合和互通性。 此外,IronPDF 提供全面的功能和支持,用於在 .NET 應用程式中進行強大的 PDF 操作。

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

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

免費 NuGet 下載 總下載次數: 11,622,374 查看許可證 >