Laden...

RestAPI oder vergleichbares

Erstellt von Sascha87 vor 2 Jahren Letzter Beitrag vor 2 Jahren 781 Views
S
Sascha87 Themenstarter:in
48 Beiträge seit 2021
vor 2 Jahren
RestAPI oder vergleichbares

Verwendetes Datenbanksystem: MySQL (MariaDB)

Hallo zusammen,
aktuell greife ich auf eine entfernte Datenbank zu. Ich würde gerne davon weg kommen und suche aufgrund dessen eine Alternative.
Jetzt habe ich öfters gelesen, dass eine RestAPI dafür gut sein soll. Auf der Suche via Google bin ich auf RestSharp gestoßen.

Kann jemand RestSharp empfehlen oder empfiehlt generell etwas anderes als eine RestAPI?

Liebe Grüße
Sascha

T
2.219 Beiträge seit 2008
vor 2 Jahren

RestSharp ist nur die Client Seite.
Damit kannst du später an die eigentliche Rest API andocken.
Was du brauchst ist eine Web API.
Auch dazu gibt es eine gute Dokumentation bei Microsoft.

Einstieg:
ASP.NET Web APIs | Rest APIs with .NET and C#

T-Virus

Developer, Developer, Developer, Developer....

99 little bugs in the code, 99 little bugs. Take one down, patch it around, 117 little bugs in the code.

2.078 Beiträge seit 2012
vor 2 Jahren

Für den Client kenne ich noch Refit - macht das alles sehr viel einfacher

Und als kleiner Hinweise:
ASP.NET != ASP.NET Core
Letzteres ist der Nachfolger
Viele alte Blogs oder Foren-Fragen gehen nur auf ASP.NET ein, daher ist es nützlich, den Unterschied zu kennen.
Der Link von T-Virus ist aber korrekt, obwohl da nur ASP.NET steht.

16.806 Beiträge seit 2008
vor 2 Jahren

Hier im Forum (auch hier) leider schon oft falsch referenziert worden (Ja, nicht ganz einfach, Microsoft Namen halt).
Aber hier die Übersicht:

> ASP.NET ist die Marke
> ASP.NET WebAPI ist ein (eingestelltes) Produkt in der ASP.NET Familie. Wird in den Dokus nur noch aus historischen Gründen so bezeichnet.
> ASP.NET Core ist das Framework, in das u.a. auch das ehemalige Produkt "WebAPI" integriert wurde (schon seit MVC 1.0!).

Was du brauchst ist eine Web API.

Habs schon paar mal hier im Forum gesagt, aber an der Stelle hier passt auch ganz gut.

Web API ist ein Microsoft Produkt, keine Technologie in dieser Ausdrucksweise.
Was er braucht trägt den Namen "HTTP API", nicht zwangsweise "Web API"; wobei "REST API" dann die Implementierung durch Angabe des Standards davon wäre.

Bei Namen darf man durchaus exakter sein als bei anderen Dingen, weil das schon weitreichende Folgen haben kann, wenn man da was verwechselt / falsch angibt.

PS: ob eine REST API, eine GraphQL API oder eine gRPC API die besse Wahl der Implementierung wäre, dafür fehlen die Informationen des Thread-Erstellers.
Alle drei haben ihre Existenzberechtigung, ihre Vorteile und Nachteile.

S
Sascha87 Themenstarter:in
48 Beiträge seit 2021
vor 2 Jahren

Hallo zusammen,
vielen Dank für eure Hilfestellungen, die haben mich schon etwas voran gebracht.

Aktuell habe ich es hinbekommen, dass Daten per URL angezeigt werden. Allerdings als array object und nicht als JSON.

Hat jemand von euch die Daten aus einem Array weiter verarbeitet?

Ich habe es mit JObject versucht, da ich zuerst dachte die Daten würden als JSON weitergegeben werden.


var client = new RestClient("https://daustausch.heinrich-luebke-schule.de/ReadAPI/faecher");
                var request = new RestRequest(Method.GET);
                

                IRestResponse restResponse = client.Execute(request);

                string response = restResponse.Content;
                var jObject = JObject.Parse(restResponse.Content);

                string fachID = jObject.GetValue("id").ToString();
                string fach = jObject.GetValue("fach").ToString();

                _faecher.Add(new Fach(fachID, fach));

Die Daten werden bis hier hin erfolgreich geladen:
string response = restResponse.Content;

Nachdem er es Parsen soll, sagt er das es nicht das richtige Format sei (logisch).

Ich nutze das "Slim Framework" zum Auslesen der Datenbank und Bereitstellung.
Eventuell gibt es noch eine Alternative, dass Array weiter zu verarbeiten?

Liebe Grüße und vielen Dank!
Sascha

P
441 Beiträge seit 2014
vor 2 Jahren

Der Server gibt (zumindest wenn ich ihn aufrufe) kein json zurück. Auch dann nicht, wenn ich Accept: application/json mitsende.

Du müsstest im Slim Framework also dafür sorgen, dass er Json zurückgibt. In PHP gibt es dafür die Funktion json_encode.

P.S.: Du solltest gleich von anfang an darüber nachdenken, deinen Server durch Authentifizierung abzusichern.

S
Sascha87 Themenstarter:in
48 Beiträge seit 2021
vor 2 Jahren

Vielen Dank für deine Tipp!
Die Authentifizierung kommt später. Als Anfänger baue ich eins nach dem anderen aus. Es muss für mich erst die Grundfunktion klappen bevor ich es "zubaue".
Ich weiß, eine seltsame Herangehensweise, aber so lerne ich am besten.

Ich habe jetzt, mittels json_encode die Daten umgewandelt.


[url]https://api.heinrich-luebke-schule.de/api/faecher[/url]

Leider kommt der gleiche Fehler.

Wie genau prüfst du, ob die Daten als json zurück geliefert werden?

Liebe Grüße
Sascha

C
55 Beiträge seit 2020
vor 2 Jahren

Hallo,

Das sieht jetzt mehr wie JSON aus, wenn ich mir das im Browser anschaue.
Versuche jetzt mal statt JObject JArray 🙂

Grüße

S
Sascha87 Themenstarter:in
48 Beiträge seit 2021
vor 2 Jahren

Das war der passende Tipp, vielen lieben Dank!

P
441 Beiträge seit 2014
vor 2 Jahren

Am besten beschäftigst du dich einmal mit JSON im allgemeinen und mit dem, was .NET dir für JSON bietet.

Die von dir verwendete Json.Net Library kann dir noch eine ganze Menge manuelle Arbeit abnehmen, wenn du sie richtig bedienst.

JObject und JArray sind dabei Klassen, die du fast nicht brauchst und in deinem Fall eher eine Krücke sind und viel manuelle Arbeit machen.

https://www.newtonsoft.com/json/help/html/SerializingJSON.htm

T
2.219 Beiträge seit 2008
vor 2 Jahren

Und zusätzlich sei auf System.Text.Json verwiesen, was Json.NET im grunde ersetzt.
Dies ist von der Usability recht identisch, kannst du also direkt verwenden.

T-Virus

Developer, Developer, Developer, Developer....

99 little bugs in the code, 99 little bugs. Take one down, patch it around, 117 little bugs in the code.

S
Sascha87 Themenstarter:in
48 Beiträge seit 2021
vor 2 Jahren

Vielen Dank für die vielen Tipps! Ich werde mir das ganze anschauen und mein Script entsprechend anpassen.

Ich bin aktuell bei der Authentifizierung und Autorisierung.

In C# nutze ich RestSharp.

Mit:


var client = new RestClient("http://example.com");
client.Authenticator = new SimpleAuthenticator("username", "foo", "password", "bar");

var request = new RestRequest("resource", Method.GET);
client.Execute(request);

schicke ich die Anfrage an den Server und bekommen die Info, ob die Anmeldedaten passen, zurück. Soweit verständlich.

Auf der anderen Seite nutze ich Lumen (Laravel). Dort muss ich die Daten annehmen und prüfen. Es gibt grundsätzlich bei mir keine Useraccounts. Soll ich extra eine Tabelle anlegen und mit dieser vergleichen? Macht das Sinn?

Wenn ich in RestSharp den Benutzername und das Passwort einfüge, kann das Programm nicht dennoch "ausgelesen" werden und die Zugangsdaten sind offen?

Über hilfreiche Tipps wäre ich sehr Dankbar!
Liebe Grüße und einen schönen Sonntag noch!
Sascha

16.806 Beiträge seit 2008
vor 2 Jahren

Wenn ich in RestSharp den Benutzername und das Passwort einfüge, kann das Programm nicht dennoch "ausgelesen" werden und die Zugangsdaten sind offen?

Deswegen nutzt man token basierte Authentifizierung und Autorisierung, damit man primäre Informationen nicht abfangen kann.
Les dir einfach mal Tutorials dazu durch, zB die von Microsoft.

S
Sascha87 Themenstarter:in
48 Beiträge seit 2021
vor 2 Jahren

Es hat sich erledigt. Post bitte löschen.

6.911 Beiträge seit 2009
vor 2 Jahren

Hallo Sascha87,

Post bitte löschen.

Posts bzw. Threads werden i.d.R. nicht gelöscht, da sie ja auch für die Community interessant sein können und "gemeinsam mehr erreichen" gilt.
Wenn der Thread aber "erledigt" ist, so kannst du den Titel (via Startbeitrag editieren) mit einem [erledigt] voranstellen, damit diese deutlicher sichtbar ist.

mfG Gü

Stellt fachliche Fragen bitte im Forum, damit von den Antworten alle profitieren. Daher beantworte ich solche Fragen nicht per PM.

"Alle sagten, das geht nicht! Dann kam einer, der wusste das nicht - und hat's gemacht!"

D
261 Beiträge seit 2015
vor 2 Jahren

...
Wenn der Thread aber "erledigt" ist, so kannst du den Titel (via Startbeitrag editieren) mit einem [erledigt] voranstellen, damit diese deutlicher sichtbar ist.
...

Gibt es für Startbeiträge eine Sonderregel? Normale Antworten können Normalsterbliche nach einer gewissen Zeit nicht mehr editieren.

S
Sascha87 Themenstarter:in
48 Beiträge seit 2021
vor 2 Jahren

Es ging mir nur im meinen letzten Post und nicht um den kompletten Thread. Ich hatte ursprünglich eine Frage gestellt die sich erledigt hat.

T
2.219 Beiträge seit 2008
vor 2 Jahren

@Sascha87
Auch in dem Fall wäre es sinnvoll gewesen die Frage zu belassen und ggf. noch die Antwort dazu zu packen.
Wenn diese zum Thema gehört, kann es u.U. auch für andere hilfreich sein um Folgeprobleme zu lösen.

T-Virus

Developer, Developer, Developer, Developer....

99 little bugs in the code, 99 little bugs. Take one down, patch it around, 117 little bugs in the code.