Entwickeln von REST-APIs mit ExpressWebJs v2 (A Nodejs Framework) Teil 1.

ExpressWebJs ist ein Node FrameWork mit ausdrucksstarker und organisierter Syntax, das auf allen wichtigen Betriebssystemen läuft. Es bietet den Ausgangspunkt für die Erstellung Ihres Node-Projekts, sodass Sie sich mehr auf die Entwicklung Ihrer großartigen Lösung konzentrieren können.

ExpressWebJs konzentriert sich auf die Bereitstellung von Entwicklererfahrung und leistungsstarken Funktionen wie Abhängigkeitsinjektion, Datenbankabstraktionsschicht für SQL und NOSQL, robustes Routing, Codestruktur, Anwendungskonfiguration, Tests und mehr.

Es gibt einige eingebaute Funktionen von ExpressWebJs

. Robustes Routing
. Konzentrieren Sie sich auf hohe Leistung
. Superhohe Testabdeckung
. HTTP-Helfer (Umleitung, Caching usw.)
. Unterstützung für SQL- und NOSQL-Datenbanken
. Gut organisiert und strukturiert.
. Unterstützt die Verwendung von Dependency Injection
. Unterstützt Websocket
. Hochgradig skalierbar
. Ereignisse und Zuhörer
. Warteschlangen
. Aufgabenplanung

Erstellen einer API für Mitarbeiterdatensätze mit ExpressWebJs

Bei Firma X haben wir viele Mitarbeiter. Wir werden gebeten, eine App zu erstellen, um unsere Mitarbeiterakte zu verwalten. Die Frontend-App wird mit Vuejs oder ReactJs erstellt. Es muss jedoch Daten aus einer Quelle ziehen und auch dorthin pushen. Wir brauchen eine API, die wir mit ExpressWebJs entwickeln werden.

Dafür benötigen wir unsere API:
. Holen Sie sich alle Mitarbeiter
. Holen Sie sich einen Mitarbeiter
. Neuen Mitarbeiter hinzufügen
. Mitarbeiterdatensatz bearbeiten
. Mitarbeiter löschen

Für die Endpunkte werden wir uns ansehen:
. GET /api/employees
. GET /api/employees/6
. POST /api/employees
. PATCH /api/employees/6
. LÖSCHEN Sie /api/employees/6

Als nächstes werden wir uns das Mitarbeiterattribut ansehen:
. Name
. Email
. Telefon
. Lage
. Land
. Zustand

Installieren Sie ExpressWebJs

Führen Sie den folgenden Befehl in Ihrem Terminal aus, um ein neues Projekt mit ExpressWebJs zu erstellen:

  npx expresswebcli new employeesApp

cd in Ihr neu erstelltes Projekt.

  cd employeesApp

Führen Sie nun npm install aus um alle Abhängigkeiten zu installieren.

Kopieren Sie example.env mit dem folgenden Befehl in die .env-Datei

 cp example.env .env

Sobald dies erledigt ist, können Sie nun Ihre Datenbank in der .env-Datei konfigurieren.

Denken Sie daran:ExpressWebJs unterstützt sowohl SQL- als auch NOSQL-Datenbanken.

Für dieses Tutorial werden wir mit mysql db (sql database) arbeiten.

Führen Sie nun npm run dev aus dem Projekt zu dienen. Gehen Sie zu Ihrem Browser.

Migration:

ExpressWebJs wird mit dem Maker-Befehl geliefert, der die Befehlszeilenschnittstelle darstellt. Maker befindet sich im Stammverzeichnis Ihrer Anwendung als Maker-Skript und bietet eine Reihe hilfreicher Befehle, die Sie beim Erstellen Ihrer Anwendung unterstützen können. Um eine Liste aller verfügbaren Maker-Befehle anzuzeigen, können Sie den Hilfebefehl verwenden:

  node maker -h

Um die Migration und das Modell unserer Mitarbeiter zu erstellen, können wir das folgendermaßen tun:

  node maker make-sql-model employees -m

-m sagt Maker um beim Erstellen unseres Modells auch eine Migration zu generieren.

Die neue Migration wird in Database/Migrations platziert .
Jeder Migrationsdateiname enthält einen Zeitstempel, der es ExpressWebJs ermöglicht, die Reihenfolge der Migrationen zu bestimmen. Als Nächstes ändern wir die kürzlich erstellte Migration so, dass sie die Attribute enthält, die wir für die Tabelle „Employees“ benötigen.

Öffnen Sie die Migrationsdatei und ändern Sie sie wie folgt:

  /**
   * Migration layout file.
   * Assign your table name to the tableName variable.
   * Remember, it's always in plural
  */
  let tableName = "employees";
  exports.up = function (knex) {
  return knex.schema.createTable(tableName, (table) => {
    table.increments("id");
    table.string("name").notNullable();
    table.string("email").unique().notNullable();
    table.string("phone").notNullable();
    table.string("location").notNullable();
    table.string("country").notNullable();
    table.string("state").notNullable();
    table.timestamps(true, true);
  });
};

exports.down = function (knex) {
  return knex.schema.dropTable(tableName);
};

Fahren Sie jetzt fort und führen Sie die Migration wie folgt aus:

   node maker run-sql-migration

Überprüfen Sie Ihre Datenbank. Sie sollten jetzt den employees haben und migrations Tische vorhanden.

Modell

als wir den node maker make-sql-model employees
-m
ausgeführt haben ExpressWebjs hat unser Modell im App/Model generiert Verzeichnis.

App/Model/Employees_model.js

   "use strict";
   const Model = require("@elucidate/Model");
   class Employees extends Model {
      static get tableName() {
         return "employees";
      }
   }

   module.exports = Employees;

Mitarbeiter-Controller einrichten

Um einen neuen Controller namens EmployeesController zu erstellen, verwenden Sie den Maker-Befehl für Controller:

  node maker make-controller EmployeesController -r

wobei -r weist Maker an, unseren Controller mit Ressourcenmethoden zu generieren.

Unser Controller wird in App/Http/Controller generiert Verzeichnis

App/HTTP/Controller/MitarbeiterController:

  "use strict";

        class EmployeesController{
          /**
           * Display a listing of the resource.
           */
          index = async (req, res, next) =>{
            try{
              //
            }catch (error) {
              return next(error);
            }
          }

          /**
           * Show the form for creating a new resource.
           *
           * @return Response
           */
          create = async (req, res, next) => {
            try{
              //
            }catch (error) {
              return next(error);
            }
          }

          /**
           * Store a newly created resource in storage.
           * @param  Request 
           * @return Response
           */
          store = async (req, res, next) => {
            try{
              //
            }catch (error) {
              return next(error);
            }
          }

          /**
           * Display the specified resource.
           * @param  Request
           * @return Response
           */
          show = async (req, res, next) => {
            try{
              //
            }catch (error) {
              return next(error);
            }
          }

          /**
           * Show the form for editing the specified resource.
           * @param  Request
           * @return Response
           */
          edit = async (req, res, next) => {
            try{
              //
            }catch (error) {
              return next(error);
            }
          }

          /**
           * Update the specified resource in storage.
           * @param  Request
           * @return Response
           */
          update = async (req, res, next) => {
            try{
              //
            }catch (error) {
              return next(error);
            }
          }

          /**
           * Remove the specified resource from storage.
           *
           * @param Request
           * @return Response
           */
          destroy = async (req, res, next) => {
            try{
              //
            }catch (error) {
              return next(error);
            }
          }
        }

        module.exports = EmployeesController;

Wir werden gleich unseren EmployeesController auffüllen.

Routen einrichten

Das Routing ist ziemlich einfach. Öffnen Sie Routes/api.js und ändern Sie es wie folgt:

   "use strict";
   const Route = require("@routerManager");
   /*
    |---------------------------------------------------------
    | Api route   
    |---------------------------------------------------------
    |
    | Here is where you can register your application routes. 
    | These
    | routes are loaded by the RouteProvider. Now create 
    | something great!
    |
  */

Route.get("/", (req, res) => {
  res.json({ Message: "Welcome To ExpressWebjs" });
});

Route.group("/employees", () => {
  Route.get("/","EmployeesController@index");

  Route.get("/:id", "EmployeesController@show");

  Route.post("/", "EmployeesController@store");

  Route.patch("/", "EmployeesController@update");

  Route.delete("/:id", "EmployeesController@destroy");
});

module.exports = Route.exec;

Wir beginnen mit der Entwicklung der Geschäftslogik in Teil 2.

Um mehr über ExpressWebJs zu erfahren, besuchen Sie die Dokumentationsseite unter ExpressWebJs

Sie können mir auf Twitter @EmekaIgbokwe folgen
Sie können ExpressWebJs auf Twitter @expresswebjs folgen
und vergessen Sie nicht, auf Github ExpressWebJs zu staren

Bitte lassen Sie mich wissen, wenn Sie Fragen im Kommentarbereich haben. 😊