API erstellen mit OData 8.0
- Matt
Mit OData 8.0 lassen sich Daten aus einer .NET-6-Anwendung so bereitstellen, dass der Aufrufer selbst filtern, sortieren und blättern kann. Aufgesetzt wird das auf einer gewöhnlichen Web-API, wahlweise auch auf der Minimal Hosting API. OData (Open Data Protocol) ist ein standardisiertes Protokoll, das CRUD-Operationen (Create, Read, Update, Delete) sowie Abfragen und Filterung von Daten ermöglicht.
Voraussetzungen
Bevor du beginnst, stelle sicher, dass du die folgenden Voraussetzungen erfüllst:
- Visual Studio 2022 oder höher
- .NET 6 SDK
Schritt 1: Neues Projekt erstellen
Erstelle ein neues ASP.NET Core-Web-API-Projekt in Visual Studio:
- Öffne Visual Studio.
- Gehe zu “Datei” > “Neues Projekt”.
- Wähle “ASP.NET Core Web API” und klicke auf “Weiter”.
- Gib deinem Projekt einen Namen und wähle den Speicherort aus.
- Wähle “.NET 6.0 (LTS)” als Ziel-Framework und klicke auf “Erstellen”.
Schritt 2: OData-Pakete installieren
Installiere die erforderlichen OData-Pakete über NuGet. Öffne die Paket-Manager-Konsole und führe die folgenden Befehle aus:
Install-Package Microsoft.AspNetCore.OData
Schritt 3: OData konfigurieren
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();
}
Schritt 4: Beispiel-Controller erstellen
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; }
}
Fazit
OData erspart einem das Erfinden eigener Filter- und Sortierparameter, weil das Protokoll sie bereits festlegt. Der Preis ist eine Abhängigkeit mehr und eine API, deren Oberfläche man nicht mehr vollständig selbst bestimmt.
Für weitere Details und eine ausführliche Anleitung besuche den Link zur Quelle.