Wie Sie mit Node.js blitzschnell leistungsstarke REST-APIs erstellen

Seien wir ehrlich, wenn Sie ein Webentwickler sind, beschäftigen Sie sich mit APIs. Ob Sie Ihre eigenen schreiben oder die von jemand anderem verwenden, es ist nur ein Teil des Jobs. Insbesondere REST-APIs sind weit verbreitet. Leider, wenn es um die geht Wilde Westwelt von Javascript und Node.js, Standards und gute Praxis beim Schreiben von RESTful-APIs können manchmal aus dem Fenster geworfen werden.

Wieso den?

  • Weil es „einfacher“ ist
  • Weil „gut genug“ manchmal alles ist, was es braucht
  • Weil jeder „Standard“ anders sein kann
  • …Sie nennen es

Sei nicht dieser Entwickler…

Gibt es einen dieser guten Gründe, schwachen Code zu schreiben? Natürlich nicht, aber es gibt sie trotzdem. Seine menschliche Natur. Es ist allzu einfach, „eine Abkürzung zu nehmen“, und manchmal scheint es bei engen Fristen unvermeidlich. Vertrauen Sie mir, ich war dort. Was kann man also dagegen tun? Nun, die gute Nachricht ist, dass es bessere Wege gibt, sich zu entwickeln, wenn Sie das richtige Toolset haben, und mit etwas Glück entdecken Sie vielleicht sogar den „richtigen“ Weg ist der einfache Weg. Ich habe lange gebraucht, um meinen eigenen Weg der Entdeckung zu finden. Ich hoffe, dass ich Ihnen (und Ihrem API-Konsumenten) durch das Teilen meiner Geschichte Kummer ersparen kann. Hier ist, was ich gelernt habe …

Sie können zu springen Das Ergebnis Abschnitt, wenn Sie direkt zum Geschäft kommen möchten. Oder besuchen


Du bist in einer wilden Fahrt

Die Geschichte

Seit einigen Jahren arbeite ich als Webentwickler für die Softwareberatung Scal.io. Während dieser Zeit hatte ich das Vergnügen, Node.js zu lernen und an mehreren Apps zu arbeiten, die alle RESTful-APIs bedienen. Zunächst schien alles super. Ich meine, einfach googlen irgendeine Anleitung zum Erstellen einer RESTful-API mit Node.js. Sie finden unzählige Artikel und Videos darüber, wie Sie Ihren eigenen Server in wenigen Minuten zum Laufen bringen können.

Wow! Dieses Zeug ist einfach! (Ich dachte) Zumindest anfangs

Es dauerte nicht lange, bis ich auf Probleme stieß.

Oh, Sie wollen eine Payload-Validierung? Was ist mit Abfrageparametern? Wie kann ich diese Endpunkte dokumentieren? Muss ich diese Route-Handler wirklich immer wieder kopieren und einfügen? Warten Sie, Sie möchten MongoDB verwenden, aber immer noch Beziehungen unterstützen? 😳

Die Programmierung mit Node.js ist äußerst flexibel, was bedeutet, dass selbst eine einfache Aufgabe auf viele verschiedene Arten gelöst werden kann. Leider bedeutet das, dass Entwickler frei sind Dinge zu kompliziert machen (was wir gerne tun). Kein Wunder also, dass die API-Entwicklung außer Kontrolle geraten kann, wenn sich Feature-Requests häufen. Das kann schnell zu einem hässlichen Durcheinander werden, besonders wenn Sie versuchen, sich mit anderen Entwicklern abzustimmen.


der König der Vernunft?

Nach der gemeinsamen Arbeit an mehreren Projekten a Kumpel von mir der ein großartiger Entwickler ist, kam auf die großartige Idee (und implementierte sie), RESTful-Endpunkte basierend auf unseren Datenmodellen zu generieren. Ich habe es sofort geliebt. Jetzt verbrachten wir mehr Zeit damit, uns auf die Struktur und Geschäftslogik der App zu konzentrieren, anstatt immer wieder CRUD-Endpunkte zu schreiben. Nicht nur das, sondern jedes Mal, wenn wir neue Funktionen benötigten (wie das Filtern einer GET-Anforderung), mussten wir sie nur einmal für alle Endpunkte schreiben! Es fühlte sich an wie ein TROCKEN API-Paradies 😆

Ich wusste, dass wir etwas vorhatten…

Die Reise

Kurz nachdem wir dieses Projekt abgeschlossen hatten, begann ich zu prüfen, wie wir das, was wir geschaffen hatten, zu einem nützlichen Werkzeug machen könnten. Die ursprüngliche Lösung funktionierte gut, aber es war eng verbunden zum Projekt und es fehlte noch eine gute Menge an Funktionalität. Ich verbrachte Tage mit Brainstorming und Neuschreiben von Code. Nach einer scheinbar enormen Anstrengung hatte ich endlich einen praktikable Lösung. Allerdings (wie die meisten Anfänge) … war es ziemlich peinlich.

Das Tool funktionierte, aber es existierte als Framework, das Sie direkt von GitHub (eww) klonen mussten. Der Entwickler war gezwungen, sein Projekt um das Framework herum zu entwerfen, und es fehlte immer noch viel an Funktionalität, selbst im Vergleich zu unserer ursprünglichen Lösung.


Ich fühle es!

Zum Glück fing es gerade erst an. Ich hatte immer noch meine eigenen Hoffnungen und Träume für das Projekt, und jetzt, da es offiziell öffentlich war, fing es ganz langsam an, Interesse zu wecken. Die Magie von Open Source wurde lebendig, als Entwickler ihr Feedback gaben, Probleme einreichten und einige sogar anfingen, Beiträge zu leisten!

Es dauerte nicht lange, bis wichtige Verbesserungen vorgenommen wurden, z. B. die Umwandlung des Projekts in ein npm-Modul und ein geöffnet Server-Plugin. Ich hatte auch die großartige Gelegenheit (danke an Scal.io), um das Tool in einigen realen Projekten zu entwickeln und zu verwenden.

Ich habe immer an das Kernkonzept des Projekts geglaubt, aber es war aufregend, seine Nützlichkeit durch meine eigene Erfahrung bestätigen zu lassen.

giphy.gif
jasss

Je mehr es sich verbesserte, desto mehr hatte ich das Gefühl, dass wir wirklich eine Goldmine für die RESTful-API-Entwicklung angezapft hatten. Der resultierende Code war konsistent, robust und einfach zu befolgen (Standards … yay!). Nicht nur das, was früher Tage oder Wochen dauerte, um es zu entwickeln, kann jetzt in nur wenigen Stunden erledigt werden!

Das Ergebnis


Rest-glücklich

Nach fast zwei Jahren harter Arbeit und Entwicklung freue ich mich, Ihnen vorzustellen rest-hapi v1 an die Web-Entwicklungs-Community. Wir konnten bisher viele nützliche Funktionen in das Tool packen, darunter:

Mit nur wenigen einfachen Datenmodellen können Sie sofort Hunderte von dokumentierten, robusten Endpunkten generieren. Schauen Sie sich diese Beispiele an:


Endpunkte lokal generieren


Abfragen der Benutzersammlung und Auffüllen der Benutzer-Rollen-Beziehung

Das Ziel war von Anfang an, ein Tool zu entwickeln, das es Entwicklern ermöglicht, leistungsstarke REST-APIs mit minimalem Overhead zu erstellen, und ich glaube, das ist uns gelungen! Ich habe noch viele Hoffnungen und Träume für die Zukunft des Projekts, aber jetzt bin ich stolz auf das, was wir erreicht haben.

Ist es das einzige Tool seiner Art? Nö.

Passt es zu jeder Situation? Natürlich nicht!

Ist es nützlich für Sie? Wir hoffen, dass Sie es tun werden Hör zu und entscheide selbst! Wir würden gerne Ihr Feedback hören. Wenn es dir gefällt, gib ihm gerne einen Stern auf GitHub 😉

In einem zukünftigen Beitrag werde ich näher auf die Designphilosophie hinter rest-hapi eingehen, zusammen mit einigen praktischen Beispielen, wie Sie damit Ihre eigenen großartigen REST-APIs erstellen können.

Wenn Sie mit mir in Kontakt treten möchten, können Sie mich unter erreichen Twitter, Facebookoder LinkedIn, oder senden Sie mir eine E-Mail an headley.justin@gmail.com. Ich hoffe, Ihnen hat der Beitrag gefallen. Wenn ja, bitte liken! Ich würde gerne Ihre Meinung hören, also zögern Sie nicht, unten einen Kommentar zu hinterlassen. Danke fürs Lesen!

Similar Posts

Leave a Reply

Your email address will not be published.