在实际环境中测试
在生产中测试无水印。
随时随地为您服务。
开放数据协议(OData)在 Microsoft .NET 开发中简化了 RESTful API 的构建和使用。 它提供了一种标准化的方法,通过熟悉的 CRUD 来查询和操作数据。(创建、读取、更新、删除)业务。 本文将探讨开放数据协议如何简化 .NET 中的 API 开发,提供示例并强调其主要优势。 要了解有关 OData 的更多信息,您可以查看OData C# GitHub 存储库源代码。
OData 遵循构建 RESTful Web API 的标准实践,使用 URL 和 HTTP 动词(如 GET 和 POST)来定义操作。 它使用实体数据模型表示数据(EDM)翻译时必须使用 JSON 或 AtomPub 作为消息编码。 虽然与 GraphQL 相比,OData 简化了 API 开发,但其提供的高级功能可能较少。
用于 OData 的 .NET 库通过促进操作数据集的有效方法来增强开发人员的体验。 它简化了在 .NET 开发中构建和使用 RESTful API 的过程。 它提供了一种标准化的方法,通过熟悉的 CRUD 操作来查询和操作数据(创建、读取、更新、删除).
首先在 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
让我们在 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
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
所提供的代码在 ASP.NET Core 应用程序中定义了一个名为 ServiceController 的 ODataController,可以使用 OData 协议查询和操作数据。 它将请求路由到 "odata/Service",并提供服务对象的静态列表,包括一台笔记本电脑和一部智能手机。 获取方法[启用查询]允许客户执行OData查询(过滤、排序、分页)在 "产品 "列表中,对于 HTTP GET 请求,以 IActionResult 的形式返回结果。
在程序.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
该代码用于在 .NET 6 应用程序中配置 OData 支持。 首先,它导入必要的命名空间并创建一个 WebApplicationBuilder 实例。 GetEdmModel 方法使用 ODataConventionModelBuilder 定义 OData 模型,ODataConventionModelBuilder 指定了服务实体的实体集。 然后调用 AddOData 方法来配置 OData 服务,包括启用选择、过滤、排序、计数、展开,以及设置查询结果的最大顶值为 20。 这种设置可确保应用程序能够有效处理 OData 查询。
AddOData()方法使用GetEdmModel()方法,它检索用于查询的数据模型,构成OData服务的基础。此服务使用一种称为实体数据模型(Entity Data Model)的抽象数据模型。(EDM)定义暴露的数据。 ODataConventionModelBuilder 类通过默认命名约定生成 EDM,从而最大限度地减少代码需求。 此外,开发人员还可以利用 ODataModelBuilder 类来更好地控制 EDM。
运行服务后,您可以使用各种 OData 查询选项对服务进行查询,如
https://localhost:7131/odata/Service
https://localhost:7131/odata/Service
IRON VB CONVERTER ERROR developers@ironsoftware.com
IronPDF 是一个全面的 C# 库,旨在简化将文件转换为 PDF, 分割 PDF 页面和从 PDF 中删除页面在 .NET 应用程序中,您可以使用这些工具。 它提供了广泛的功能,包括从 HTML、CSS、图像和 JavaScript 生成 PDF 的能力,使开发人员能够毫不费力地将网页内容转化为高质量的 PDF 文档。 IronPDF 凭借其直观的 API 和强大的渲染引擎,使开发人员能够简化 PDF 生成流程,轻松地将动态文档生成功能集成到他们的应用程序中。
要在 Visual Studio 中安装 IronPdf,请导航到 NuGet Package Manager Console,然后使用以下命令。
Install-Package IronPdf
Install-Package IronPdf
'INSTANT VB TODO TASK: The following line uses invalid syntax:
'Install-Package IronPdf
要从 .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
本例创建了一个简单的 Employee 记录,然后使用 IronPDF 生成一个显示此人姓名的 PDF 文档。 它展示了 C# 记录如何与 .NET 应用程序中的 PDF 生成无缝集成。
OData 通过提供标准化的查询和操作功能,简化了 .NET 中 RESTful API 的开发和使用。 我们还可以将其与 Entity Framework 集成,通过简化数据访问和管理提高开发效率。 OData 简化了应用程序接口(API)的开发,其丰富的查询功能和更好的开发人员体验实现了跨平台的无缝集成和互操作性。 此外,IronPDF 还为 .NET 应用程序中强大的 PDF 操作提供了全面的功能和支持。