Zum Inhalt springen
  • 0

Welche Sprache / Framework würdet ihr heutzutage benutzen um eine REST Api zu bauen?


Frage

Geschrieben

Hey Leute, 

ich wollte mal eure Meinungen abhorchen, da wir in einem neuen Projekt grade überlegen welche Sprache / Framework Sinn macht von der Verwendung für das Bauen einer REST Api, an die eine VueJS SPA, sowie Flutter APP für Android und Ios angeschlossen werden. 

Folgende Anforderungen hätte ich: 
 - Es sollte möglich sein, JWT als Auth zu benutzen 
 - Die API soll performant laufen 

Ursprünglich komme ich aus der PHP (Laravel / Symfony) Ecke im Web Bereich, habe aber kein Problem damit eine neue Sprache zu erlernen. 
Hat da jemand eventuell n guten Tipp? :) 

Beste Grüße und ein tolles Wochenende euch!
 

15 Antworten auf diese Frage

Empfohlene Beiträge

  • 2
Geschrieben
vor 3 Minuten schrieb sharpy35:

Was mir aufgefallen ist, dass es für Laravel oder generell im PHP Bereich, kein gutes JWT Package gibt, oder habe ich da was übersehen? 

Ich nutze diese hier https://github.com/lcobucci/jwt

Auf jwt.io findest du auch eine Übersicht über alle möglichen JTW-Libs, diese unterstützt aber fast alles von den JWT funktionen.

Notifications, also zumindest One-Way, sind ja auch kein Problem mit Laravel. Passport oder Sanctum brauchst du dafür nicht wirklich, ich habe das irgendwann mal einfach mit einem eigenen Auth Provider gelöst, der das JWT ausgelesen und entsprechend den User eingeloggt hat.

Du kannst dich auch noch weiter umschauen nach anderen Sprachen/Framework, aber von den Anforderungen her kommt so ziemlich alles in Frage. Daher mein Rat, nutz das womit du dich auskennst. Sonst machst du nur in anderen Bereichen die typischen Anfängerfehler die dir später auf die Füße fallen werden.

  • 1
Geschrieben
vor 4 Minuten schrieb sharpy35:

API Documentation im OpenAPI 3.0 Format

Da kannst du dir ggf. https://openapi-generator.tech/ anschauen. Bei uns im Unternehmen benutzen wir Java + Spring, aber du kannst natürlich auch z.B. Node und Express, C# und ASP.NET (Core) benutzen.

Bei der Auswahl stimme ich aber @Funfare1337 zu - für die Produktion nimmst du am besten das, was du schon beherrscht. :)

  • 0
Geschrieben
vor 4 Minuten schrieb sharpy35:

- Es sollte möglich sein, JWT als Auth zu benutzen 
 - Die API soll performant laufen 

Das ist nicht gerade sehr spezifisch. Das können viele Sprachen.

Und was ist mit performant genau gemeint? Um welche Art von Projekt geht es denn hier.

Nach den aktuellen Infos kann ich: C#, Java, Ruby, Python, PHP, Go ................. empfehlen :D 

  • 0
Geschrieben

haha, ok du hast Recht ich sollte etwas spezifischer werden: 
Es geht aktuell darum die API für ein Produktivitätstool im Design Bereich zu bauen. 

Vielleicht war die Frage etwas falsch formuliert und sollte eher in die Richtung gehen: Wenn ihr heutzutage ein neues API Projekt anfangt, welche Sprache / Framework nehmt ihr und warum? Falls ihr bei jedem neuen Projekt neu evaluiert, wie geht ihr da im Entscheidungsprozess vor? 

 

  • 0
Geschrieben

Für produktive Projekte würd ich primär bei der Technik bleiben die ich kenne. Bei mir ist es im PHP Umfeld Laravel/Lumen.

Die ersten Projekte mit einem neuen Framework oder gerade Programmiersprache werden nie so gut sein, wie wenn man schonmal ein paar Projekte umgesetzt hat und entsprechend Erfahrung gesammelt hat. Außer es gibt entsprechend KO-Kriterien die mir den Einsatz der vorhandenen Frameworks unmöglich machen.

Deine Anforderungen sind aber immernoch sehr gering. REST API bekommt jede Sprache und so ziemlich jedes Framework hin, JWT Auth auch, entweder direkt eingebaut oder zur not über ein Package. Bis jetzt würde für mich nichts dagegen sprechen, dass du bei Laravel oder Symfony bleibst. Warum wechseln und das Wissen grundlegend neu aufbauen, wenn du vermutlich viel schneller mit deinem aktuellen Wissen bist und da auch schon die ersten Stolpersteine kennst.

Zu den sonstien Anforderungen: Was hast du für eine DB? MongoDB etc sind eher unpraktisch mit Laravel, das möchte lieber ne klassische sql db.
Hast du langlaufende Tasks die man nicht über eine PHP Task abhandeln möchte/kann (z.B. mit Laravel Queue)
Kommt noch eine Websocket Verbindung hinzu? Dann vllt eher in die Richtung NodeJS.

Du musst schon mehr an technischen Anforderungen definieren um sinnvoll entscheiden zu können was du machst. Was genau fachlich dahinter steckt ist ja nicht so relevant, wenn du das nicht preisgeben magst. Aber eine grundlegende technische Anforderung muss schon gegeben sein.

Ne reine REST API mit JWT kannst dir mit jeder Programmiersprache zusammenbasteln, egal ob mit oder ohne Framework

  • 0
Geschrieben (bearbeitet)
vor 9 Minuten schrieb Funfare1337:

Deine Anforderungen sind aber immernoch sehr gering. REST API bekommt jede Sprache und so ziemlich jedes Framework hin, JWT Auth auch, entweder direkt eingebaut oder zur not über ein Package. Bis jetzt würde für mich nichts dagegen sprechen, dass du bei Laravel oder Symfony bleibst. Warum wechseln und das Wissen grundlegend neu aufbauen, wenn du vermutlich viel schneller mit deinem aktuellen Wissen bist und da auch schon die ersten Stolpersteine kennst.

Was mir aufgefallen ist, dass es für Laravel oder generell im PHP Bereich, kein gutes JWT Package gibt, oder habe ich da was übersehen? 

Passport, ist mir, als kompletter Oauth Server, etwas zu aufgebläht und Laravel Sanctum geht leider auch nicht so ganz in die richtige Richtung. 
Dann gibs ja noch von tymondesign/jwt-auth, welches aber gefühlt tot ist, da es über 500 unsolved issues hat und schon über 8 Monate nicht mehr geupdated wurde. Und irgendwie behagt es mir nicht so ganz ein Security Package reinzuziehen, was nen dreiviertel Jahr keine Patches bekommen hat. 
 

vor 9 Minuten schrieb Funfare1337:

Zu den sonstien Anforderungen: Was hast du für eine DB? MongoDB etc sind eher unpraktisch mit Laravel, das möchte lieber ne klassische sql db.
Hast du langlaufende Tasks die man nicht über eine PHP Task abhandeln möchte/kann (z.B. mit Laravel Queue)
Kommt noch eine Websocket Verbindung hinzu? Dann vllt eher in die Richtung NodeJS.

Als DB reicht hier vollkommen eine MySQL, wobei ich auch schon MongoDB Projekte mit Laravel gesehen habe. 
Langlaufende Tasks, wäre das einzige nen Mailversand mit vorheriger PDF-Generierung, aber wie du schon sagtest, das kann man ohne Probleme über Laravel Queue abbilden. 

Zum Thema Websocket: Ja es sind notifications geplant, die am Besten in Realtime sein sollten :) 

Bearbeitet von sharpy35
  • 0
Geschrieben (bearbeitet)

Also hier nochmal ein kleines Update was genau technisch benötigt wird: 

Datenbank: MySQL 
Authentication: JWT 
Email Versand mit PDFs -> eventuell einzige Task der lange dauern kann (muss daher im Hintergrund laufen)
Notifications (Realtime mit Push) 
Frontend: SPA mit VueJS 
App: Android / Ios mit Flutter 
API Documentation im OpenAPI 3.0 Format

Ansonsten Standard CRUD Operationen in den Endpunkten. 

Bearbeitet von sharpy35
  • 0
Geschrieben (bearbeitet)

Danke euch @Funfare1337 und @sonicschall, ich gucke mir da mal die PHP Packages an, die zur Verfügung stehen und werde einfach verschiedene ausprobieren. Einen eigenen Auth Provider zu bauen ist dann letztendlich auch kein großer Act. :) 

Aber ich denke, dass ihr Recht habt, dass es sinnvoll ist, bei dem zu bleiben was man kennt, da man damit einfach komfortabler unterwegs ist und vor allem die typischen Anfänger Fehler, die man grade in Production nicht haben will, vermeidet :) 

Bearbeitet von sharpy35
  • 0
Geschrieben (bearbeitet)
vor einer Stunde schrieb sharpy35:

Hey Leute, 

ich wollte mal eure Meinungen abhorchen, da wir in einem neuen Projekt grade überlegen welche Sprache / Framework Sinn macht von der Verwendung für das Bauen einer REST Api, an die eine VueJS SPA, sowie Flutter APP für Android und Ios angeschlossen werden.

Der Witz ist doch, dass RestAPIs unabhängig von der tatsächlichen Anwendungen sind. Es ist egal, ob es eine SPA, Android/iOS-App oder eine Windows/Linux-Desktop-Anwendung ist. ;)

vor einer Stunde schrieb sharpy35:

Hat da jemand eventuell n guten Tipp? :) 

Das nehmen, womit man das meiste Know-How hat. ;)

Es ist völlig egal, ob man nun Java, C#, NodeJS, Python, etc. und das dazugehörige Framework nimmt. Alle sind dafür gut geeignet.

vor 27 Minuten schrieb sharpy35:

Datenbank: MySQL 

Datenbanken sind nur ein Detail, die unabhängig von der verwendeten Sprache und von RestAPIs sind. Also völlig irrelevant. Kann ja auch sein, dass an einer Stelle eine dokumentenbasierte Datenbank (z.B. MongoDB) sinnvoller ist und an einer anderen Stelle eine relationale Datenbank.

Bearbeitet von Whiz-zarD
  • 0
Geschrieben
vor 1 Stunde schrieb sharpy35:

Die API soll performant laufen

Das kann alles und nichts sein ;) Ein Hello World wird fast immer performant laufen. 

vor 1 Stunde schrieb sharpy35:

Es geht aktuell darum die API für ein Produktivitätstool im Design Bereich zu bauen. 

Eine Überschrift habt ihr also schon. 

Jetzt könnte man sich mit den betroffenen zusammensetzen, und ein paar gezielte Fragen stellen, was eigentlich genau benötigt wird. Das müssen ja keine Romane werden. Ein bis zwei prägnante Sätze. Vielleicht schon mal Stories in Jira oder Ähnlichem anlegen. Von da aus sind konkretere Ideen nicht mehr weit.

Diskutiert über die Stories. Wägt ab, welche Aufgaben möglicherweise zu komplex sind (vielleicht schon erste Schätzungen abgeben).

vor 1 Stunde schrieb sharpy35:

Wenn ihr heutzutage ein neues API Projekt anfangt, welche Sprache / Framework nehmt ihr und warum? Falls ihr bei jedem neuen Projekt neu evaluiert, wie geht ihr da im Entscheidungsprozess vor? 

Erst mal muss man wissen, was umgesetzt werden muss, dann kann man sich überlegen, womit man das umsetzt. Häufig gibt es ja schon eine "Hausmarke". Wenn man sich es leisten kann, lohnt sich einen Blick über den Tellerrand, und versucht etwas Neues. Doch das funktioniert nur wenn alle bis zum Geschäftsführer dahinterstehen.

Ich würde zunächst eine technologieneutrale Betrachtungsphase vorziehen, die ruhig ein paar Wochen dauern darf. So fühlen sich alle Beteiligten auch mitgenommen.

  • 0
Geschrieben

Was spricht denn gegen Sanctum? Das ist ebenfalls Token basiert und längst nicht so aufgebläht wie Passport. Ich nutze es, seit jwt-auth irgendwie tot ist, in allen Projekten.

  • 0
Geschrieben (bearbeitet)

Erst einmal eine sehr unbefriedigende Antwort: es ist egal! Im Grunde gibt es für jede Sprache Libraries und Frameworks, die Requests abhandeln können. Deshalb ist die Frage zwar durchaus berechtigt - aber eben auch nicht eindeutig zu beantworten.

Technisch ähneln die sich auch sehr, weshalb man andere Entscheidungskriterien braucht. Bisher wurden Rest, Crud und JWT genannt. Ein mögliches anderes Entscheidungskriterium kann z. B. die Sprache sein. Frontend in Vue, warum dann nicht NodeJS (mit z. B. Express), damit man Code-Teile wiederverwenden kann? App Ionic (auch mit Vue?). Das wäre zumindest eine Argumentation für ein JS Backend.

Oder man macht ein Microservice-Backend und jeden Microservice in einer anderen Sprache ;)

Bearbeitet von pr0gg3r
  • 0
Geschrieben
Am 27.8.2021 um 10:13 schrieb sharpy35:

Hey Leute, 

ich wollte mal eure Meinungen abhorchen, da wir in einem neuen Projekt grade überlegen welche Sprache / Framework Sinn macht von der Verwendung für das Bauen einer REST Api, an die eine VueJS SPA, sowie Flutter APP für Android und Ios angeschlossen werden. 

Folgende Anforderungen hätte ich: 
 - Es sollte möglich sein, JWT als Auth zu benutzen 
 - Die API soll performant laufen 

Ursprünglich komme ich aus der PHP (Laravel / Symfony) Ecke im Web Bereich, habe aber kein Problem damit eine neue Sprache zu erlernen. 
Hat da jemand eventuell n guten Tipp? :) 

Beste Grüße und ein tolles Wochenende euch!
 

Wenn es nicht unbedingt REST sein muss, kannst du dir auch mal GraphQL anschauen. Gerade wenn man mobile Clients hat, bringt GraphQL viele Vorteile. (https://www.apollographql.com/docs/intro/benefits/)

  • 0
Geschrieben

Ich schreibe REST-APIs immer in C# auf .NET 5. Ist auf den MSDN-Seiten sehr gut dokumentiert.

Beispiel:
https://docs.microsoft.com/de-de/aspnet/core/tutorials/first-web-api?view=aspnetcore-5.0&tabs=visual-studio

Der Vorteil ist halt, dass du im .NET 5 Bereich beispielsweise alles innerhalb eines Frameworks entwickeln kannst. Mit den Blazor-Vorlagen z.B. kannst du recht schnell und einfach, komplexere und stabile Webseiten und native Apps bauen. Mit anderen Vorlagen Windows Applications, Dienste, etc.

Einen weiteren Vorteil bietet dir das Entity Framework. Du schreibst halt keine SQL-Queries mehr, sondern arbeitest ausschließlich mit LINQ / Lamda-Expressions. Ich weiß nicht wie weit andere Programmiersprachen hier sind, Java hatte ewig lange kein wirkliches Equivalent dazu, die hatten zwar Hibernates, aber nichts was wirklich so mächtig ist wie LINQ und Entity Framework. Python hat ein paar alternative und sehr mächtige ORMs, aber persönlich präferiere ich hier C# und .NET 5. Bei allen anderen Sprachen bin ich was das angeht raus.
 

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Diese Frage beantworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...