01 Jul 2023 - Matthias Voigt
Das Erstellen einer API mit OData 8.0 bietet eine leistungsstarke und flexible Möglichkeit, Daten in einer .NET 6-Anwendung bereitzustellen. OData (Open Data Protocol) ist ein standardisiertes Protokoll, das CRUD-Operationen (Create, Read, Update, Delete) sowie Abfragen und Filterung von Daten ermöglicht.
Bevor du beginnst, stelle sicher, dass du die folgenden Voraussetzungen erfüllst:
Erstelle ein neues ASP.NET Core-Web-API-Projekt in Visual Studio:
Installiere die erforderlichen OData-Pakete über NuGet. Öffne die Paket-Manager-Konsole und führe die folgenden Befehle aus:
Install-Package Microsoft.AspNetCore.OData
Konfiguriere OData in der Startup.cs
oder Program.cs
-Datei deines Projekts. Füge die OData-Services und Routen hinzu:
var builder = WebApplication.CreateBuilder(args);
// Add services to the container.
builder.Services.AddControllers()
.AddOData(options => options.Select().Filter().Expand().Count().OrderBy().SetMaxTop(100)
.AddRouteComponents("odata", GetEdmModel()));
var app = builder.Build();
// Configure the HTTP request pipeline.
if (app.Environment.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}
app.UseRouting();
app.UseEndpoints(endpoints =>
{
endpoints.MapControllers();
endpoints.Select().Filter().Expand().Count().OrderBy().MaxTop(100);
endpoints.MapODataRoute("odata", "odata", GetEdmModel());
});
app.Run();
IEdmModel GetEdmModel()
{
var odataBuilder = new ODataConventionModelBuilder();
odataBuilder.EntitySet<Product>("Products");
return odataBuilder.GetEdmModel();
}
Erstelle einen Beispiel-Controller, der OData verwendet. Hier ein Beispiel für einen einfachen Produkt-Controller:
using Microsoft.AspNetCore.Mvc;
using Microsoft.AspNetCore.OData.Routing.Controllers;
using System.Collections.Generic;
using System.Linq;
public class ProductsController : ODataController
{
private static IList<Product> _products = new List<Product>
{
new Product { Id = 1, Name = "Product 1", Price = 10 },
new Product { Id = 2, Name = "Product 2", Price = 20 },
new Product { Id = 3, Name = "Product 3", Price = 30 },
};
[EnableQuery]
public IActionResult Get()
{
return Ok(_products);
}
[EnableQuery]
public IActionResult Get(int key)
{
var product = _products.FirstOrDefault(p => p.Id == key);
if (product == null)
{
return NotFound();
}
return Ok(product);
}
}
public class Product
{
public int Id { get; set; }
public string Name { get; set; }
public decimal Price { get; set; }
}
Die Integration von OData 8.0 in eine ASP.NET Core-Web-API bietet eine leistungsstarke Möglichkeit, Datenabfragen und CRUD-Operationen zu vereinfachen. Mit wenigen Schritten kannst du eine flexible und erweiterbare API erstellen.
Für weitere Details und eine ausführliche Anleitung besuche den Link zur Quelle.