Laden...

C#Web API Object in Json format anzeigen.

Erstellt von IliasTS vor 3 Jahren Letzter Beitrag vor 3 Jahren 789 Views
I
IliasTS Themenstarter:in
3 Beiträge seit 2020
vor 3 Jahren
C#Web API Object in Json format anzeigen.

Hallo Leute,

Ich habe ein Problem was ich nicht lösen kann.
Programmiere eine API in c# ASP.NET für eine Webseite bzw. ich mache das Back end.
Nun hat mir der Front end Entwickler folgende aufgabe gegeben.
Von der Datenbank muss ich die Page Daten ziehen (Pagename, Pagedespripion, Url) und über Jsonresult Get diese als json format anzeigen. Das habe ich auch gemacht.
Das Problem ist aber dass der es im folgendem format braucht:
Example/Url soll das Key sein.
Desweiteren wie im foto zu sehen ist (Datei angehängt), benötigt er am anfang {} anstatt [].

Das Problem ist anscheinend dass ich Listen nutze. Folgendes mache ich:
Zur Zeit ziehe ich alle Daten von der Datenbank und füge diese zu eine Liste hinzu. Anschließend Rufe ich die MySQL Methode in der Get Methode und füge alle Daten in der Liste. am ende returne ich die Liste. Daher auch die [] am anfang.
Wie kann ich das aber ohne Liste lösen?
Ich muss ein Objekt returnen. In diesem Fall wird aber nur das Letzte der Tabelle angezeigt.

Ist das überhaut möglich. Kann mir jemand hierfür eventuell ein Tipp geben?

Danke Sehr!!!

P
441 Beiträge seit 2014
vor 3 Jahren

Die geschweiften Klammern beschreiben ein Objekt, die eckigen ein Array.
Du musst also deine Daten transformieren, bevor du sie zurück gibst.

Die Daten können zwischen API und Datenbank durchaus ganz unterschiedlich aussehen.

Wenn du die Daten in das Format bringen willst, könntest du ein Dictionary<string, T> verwenden.

I
IliasTS Themenstarter:in
3 Beiträge seit 2020
vor 3 Jahren

Hallo Papst,

Vielen Dank für deine schnelle Antwort.

Zur Zeit sieht mein code folgendermaßen (Siehe Anhang).

Also soll ich in der Get Methode anstatt eine Liste, ein Dictionary nutzen?
Anschließend über eine foreach das Object in der Dictionary hinzufügen?

Hinweis von Abt vor 3 Jahren

Kein Code in Bildern; Code Tags verwenden.
Bild entfernt.
[Hinweis] Wie poste ich richtig?

P
441 Beiträge seit 2014
vor 3 Jahren

Es gibt zehntausende Artikel, die beschreiben, wie man eine solche APi am besten aufbaut.

Nutzt du ASP.NET Core oder ASP.NET?
Wenn du die Möglichkeit hast, solltest du versuchen auf ASP.NET Core zu setzen.

Die Action könnte ungefähr so aussehen:


public async Task<IActionResult> GetAll()
{
  var pages = await _repository.GetAllAsync();
  return Ok(pages.ToDictionary(p => p.URL, p => new PageDescription {
    PageName = p.Name,
    [...]
  }));
}

Besser: *kapsele das Mapping (.ToDictionary), dann wird der Code lesbarer. Entweder in eine eigene Methode oder in eine Bibliothek wie AutoMapper. *Nutze nicht ToDictionary sondern ein eigenes Objekt

Generell davon ein Dictionary zurückzugeben, kann ich weder ab- noch dazuraten. Best practises gibt es im Internet bestimmt ausreichen oder jemand mit mehr API Erfahrung kann hier etwas dazu schreiben.
Ich würde es vermeiden, wenn es geht.

I
IliasTS Themenstarter:in
3 Beiträge seit 2020
vor 3 Jahren

Danke dir.

Ich werde es mal testen.