Zum Hauptinhalt springen

Erstellen einer API

Grundlagen

Damit man effektiv mit einer API arbeiten kann, ist es wichtig, die grundlegenden HTTP-Befehle zu kennen, da sie die Kommunikationswege mit der API darstellen. Diese Befehle bestimmen, wie Anfragen an die API gestellt und wie Antworten empfangen werden. Hier ist eine kurze Übersicht:

Wichtige HTTP-Befehle für APIs:

  1. GET: Fordert Daten an. Beispiel: Abrufen von Informationen über einen Nutzer.
  2. POST: Sendet Daten, um eine neue Ressource zu erstellen. Beispiel: Anlegen eines neuen Nutzers.
  3. PUT: Aktualisiert eine Ressource vollständig. Beispiel: Ändern aller Informationen eines Nutzers.
  4. DELETE: Löscht eine Ressource. Beispiel: Entfernen eines Nutzers aus dem System.

Vergleich mit SQL-Befehlen:

Der Vergleich von SQL-Befehlen mit API-HTTP-Methoden zeigt, wie ähnliche Datenoperationen in unterschiedlichen Kontexten ablaufen. Während SQL in Datenbanken zur Datenmanipulation dient, verwenden APIs HTTP-Methoden, um Daten über Server abzurufen, zu erstellen, zu aktualisieren oder zu löschen. Beide Ansätze basieren auf ähnlichen Konzepten, jedoch in verschiedenen Einsatzgebieten.

  1. GET entspricht SELECT: Beide holen Daten ab.
  2. POST entspricht INSERT: Beide fügen neue Daten hinzu.
  3. PUT entspricht UPDATE: Beide aktualisieren vorhandene Daten.
  4. DELETE entspricht DELETE: Beide löschen Daten.

API erstellen in .NET

Um eine API in C# mit den HTTP-Methoden GET, POST, PUT und DELETE zu erstellen, kannst du das ASP.NET Core Framework verwenden. Hier ist eine einfache Schritt-für-Schritt-Anleitung:

1. Projekt erstellen:

  1. Öffne Visual Studio oder ein Terminal.
  2. Erstelle ein neues ASP.NET Core Web API Projekt:
    dotnet new webapi -n MyApi
    cd MyApi

2. API-Controller erstellen:

Die grundlegenden API-Methoden werden in einem Controller definiert. Ein Beispiel für einen Controller könnte so aussehen:

using Microsoft.AspNetCore.Mvc;
using System.Collections.Generic;

namespace MyApi.Controllers
{
[Route("api/[controller]")]
[ApiController]
public class ItemsController : ControllerBase
{
// In-memory data store (for demonstration purposes)
private static List<string> items = new List<string> { "Item1", "Item2", "Item3" };

// GET: api/items
[HttpGet]
public ActionResult<IEnumerable<string>> Get()
{
return Ok(items);
}

// GET: api/items/{id}
[HttpGet("{id}")]
public ActionResult<string> Get(int id)
{
if (id < 0 || id >= items.Count)
return NotFound();

return Ok(items[id]);
}

// POST: api/items
[HttpPost]
public ActionResult Post([FromBody] string item)
{
items.Add(item);
return CreatedAtAction(nameof(Get), new { id = items.Count - 1 }, item);
}

// PUT: api/items/{id}
[HttpPut("{id}")]
public ActionResult Put(int id, [FromBody] string item)
{
if (id < 0 || id >= items.Count)
return NotFound();

items[id] = item;
return NoContent();
}

// DELETE: api/items/{id}
[HttpDelete("{id}")]
public ActionResult Delete(int id)
{
if (id < 0 || id >= items.Count)
return NotFound();

items.RemoveAt(id);
return NoContent();
}
}
}

3. Erklärung der API-Endpunkte:

  • GET: api/items: Ruft alle Items ab.
  • GET: api/items/{id}: Ruft ein spezifisches Item anhand der ID ab.
  • POST: api/items: Fügt ein neues Item hinzu.
  • PUT: api/items/{id}: Aktualisiert ein vorhandenes Item.
  • DELETE: api/items/{id}: Löscht ein Item.

4. API testen:

Du kannst die API mit einem Tool wie Postman oder Swagger testen. ASP.NET Core bietet integriertes Swagger-Support, das automatisch eine UI zum Testen der Endpunkte generiert.

5. (Optional) Datenbankanbindung:

Für eine richtige API, die mit einer Datenbank verbunden ist, kannst du Entity Framework Core verwenden, um Daten persistent zu speichern.

API Rückgabe Codes

Hier ist eine kurze Liste der wichtigsten HTTP-Statuscodes, die in einer C#-API häufig verwendet werden, zusammen mit den entsprechenden ASP.NET Core Methoden:

Wichtige HTTP-Statuscodes:

  1. 200 OK:

    • Wird zurückgegeben, wenn eine Anfrage erfolgreich war.
    • Verwendet bei GET, PUT, PATCH, DELETE.
    return Ok(); // oder
    return Ok(data);
  2. 201 Created:

    • Wird zurückgegeben, wenn eine Ressource erfolgreich erstellt wurde.
    • Verwendet bei POST.
    return CreatedAtAction(nameof(Get), new { id = createdItem.Id }, createdItem);
  3. 204 No Content:

    • Wird zurückgegeben, wenn eine Anfrage erfolgreich war, aber keine Daten zurückgegeben werden.
    • Verwendet bei PUT, DELETE.
    return NoContent();
  4. 400 Bad Request:

    • Wird zurückgegeben, wenn die Anfrage ungültig oder fehlerhaft ist.
    • Kann bei allen Methoden verwendet werden, wenn z.B. die Eingabedaten nicht korrekt sind.
    return BadRequest("Invalid request.");
  5. 404 Not Found:

    • Wird zurückgegeben, wenn eine angeforderte Ressource nicht gefunden wird.
    • Verwendet bei GET, PUT, PATCH, DELETE.
    return NotFound();
  6. 409 Conflict:

    • Wird zurückgegeben, wenn ein Konflikt auftritt, z.B. wenn versucht wird, eine Ressource zu erstellen, die bereits existiert.
    • Verwendet bei POST.
    return Conflict("Resource already exists.");
  7. 500 Internal Server Error:

    • Wird zurückgegeben, wenn auf der Serverseite ein unerwarteter Fehler auftritt.
    • Kann bei allen Methoden verwendet werden, wenn z.B. eine Ausnahme auftritt.
    return StatusCode(500, "An unexpected error occurred.");

Zusammenfassung der Statuscodes in der API:

  • GET: 200 OK, 404 Not Found
  • POST: 201 Created, 400 Bad Request, 409 Conflict
  • PUT: 200 OK, 204 No Content, 400 Bad Request, 404 Not Found
  • DELETE: 204 No Content, 404 Not Found

Diese Statuscodes bieten eine klare Rückmeldung über den Erfolg oder Misserfolg einer API-Anfrage.


Kommentare