https://d226lax1qjow5r.cloudfront.net/blog/blogposts/5-ways-to-build-a-node-js-api/Blog_Node-js_APIs_1200x600.png

5 Wege zur Erstellung einer Node.js-API

Zuletzt aktualisiert am May 11, 2021

Lesedauer: 28 Minuten

Dieser Artikel hilft Ihnen, eine kleine API auf fünf Arten zu erstellen, indem Sie Node.js und vier beliebten Frameworks.

Express.js ist eines der vielen HTTP-Frameworks, die für Node.js. Wir verwenden es für einen Großteil unserer Node.js Inhalte, da es eine große Auswahl an Addons und eine große Support-Community gibt.

Die Ähnlichkeiten bei der Erzeugung derselben Funktionalität in verschiedenen Frameworks können helfen, einen Einblick zu gewinnen, wenn eine unserer Demos in einem anderen Framework als dem des Tutorials implementiert wird. Das hoffe ich.

Express.js

Wir beginnen mit dem Bekannten. Express.js ist ein leichtgewichtiges und "rechthaberisches" Framework zur Erstellung von Node.js basierten Web- und Mobilanwendungen.

Einen Server erstellen

Erstellen Sie ein Projektverzeichnis mit Ihrer IDE oder diesem Befehl.

mkdir rest-express cd rest-express

Erstellen Sie eine Datei für Ihre Anwendung (normalerweise app.js oder index.js).

touch index.js

Initialisieren Sie das Projekt mit NPM, indem Sie grundlegende NPM-Paketdateien erzeugen, ohne dass Sie Fragen mit dem y Flagge zu beantworten.

npm init -y

Installieren Sie die Express.js Paket.

npm install express

Ändern Sie index.js und fügen Sie den folgenden Quellcode hinzu, um Ihre Anwendung und die example Route.

// index.js

const express = require('express')

const app = express()
const port = process.env.PORT || 3000

app.get('/example', (req, res) => {
  res.json({ message: 'Looks good to me!' })
})

app.listen(port, () => {
  console.log(`listening on port ${port}`)
})

Den Server ausführen

Starten Sie die Anwendung über die node Befehlszeile. Sie sind vielleicht gewohnt, dass npm start verwendet, das in vielen Fällen ohnehin nur diesen Befehl für Ihre Anwendungsdatei ausführt.

node index.js

Jetzt können Sie mit Postman eine Anfrage stellen, um die Antwort zu sehen.

Screenshot of making a request to the Express.js example API using PostmanScreenshot of making a request to the Express.js example API using Postman

Node.js Standard-Bibliotheken

Node.js verfügt über integrierte Pakete, die auf HTTP-Anfragen warten und Antworten erstellen können. Die anderen Frameworks vereinfachen dies und fügen mehrere andere Funktionen hinzu, die Sie sonst selbst entwickeln müssten.

Einen Server erstellen

Erstellen Sie ein Projektverzeichnis mit Ihrer IDE oder diesem Befehl.

mkdir rest-node-only cd rest-node-only

Erstellen Sie eine Datei für Ihre Anwendung (normalerweise app.js oder index.js).

touch index.js

Wir brauchen NPM erst dann zu initialisieren, wenn wir Pakete installieren müssen. Für dieses Beispiel verwenden wir Pakete, die in Node.js also brauchen wir weder NPM noch irgendwelche Paketdateien (🎉🎉🎉 AND NO node_modules VERZEICHNIS 🎉🎉🎉).

Ändern Sie index.js und fügen Sie den folgenden Quellcode hinzu, um Ihre Anwendung und die example Route.

// index.js

const http = require('http')

const port = process.env.PORT || 3000

const requestHandler = (req, res) => {
  if (req.url === '/example'  && req.method === 'GET') {
    res.writeHead(200, { 'Content-Type': 'application/json' })
    res.end(JSON.stringify({ message: 'Node.js only: Looks good to me!' }))
  } else {
    res.writeHead(404, { 'Content-Type': 'application/json' })
    res.end(JSON.stringify({ message: 'Not found!' }))
  }
}

const server = http.createServer(requestHandler)

server.listen(port, () => {
  console.log(`listening on port ${port}`)
})

Den Server ausführen

Starten Sie die Anwendung über die node Befehlszeile.

node index.js

Jetzt können Sie mit Postman eine Anfrage stellen, um die Antwort zu sehen.

Screenshot of making a request to the Node.js example API using PostmanScreenshot of making a request to the Node.js example API using Postman

Koa.js

Koa.js, entwickelt von denselben Entwicklern, die auch für Express.jsKoa.js wurde mit dem Ziel entwickelt, schlanker und ausdrucksstärker zu sein, was einen schlankeren Code und eine deutlich verbesserte Fehlerbehandlung ermöglicht. Als solches kommt es mit weniger eingebauten Funktionen und einer großen Anzahl von Community-Erweiterungen.

Einen Server erstellen

Erstellen Sie ein Projektverzeichnis mit Ihrer IDE oder diesem Befehl.

mkdir rest-koa cd rest-koa

Erstellen Sie eine Datei für Ihre Anwendung (normalerweise app.js oder index.js).

touch index.js

Initialisieren Sie das Projekt mit NPM, indem Sie grundlegende NPM-Paketdateien erzeugen, ohne dass Sie Fragen mit dem y Flagge zu beantworten.

npm init -y

Installieren Koa.js und die unterstützenden Pakete zum Weiterleiten und Senden von JSON-Antworten. Anmerkung: Koa unterstützt kein Routing (außer Url-Bedingungen) oder JSON-Antworten ohne zusätzliches Paket.

npm install koa @koa/router koa-json

Ändern Sie index.js und fügen Sie den folgenden Quellcode hinzu, um Ihre Anwendung und die example Route.

// index.js

const Koa = require('koa')
const Router = require('@koa/router')
const json = require('koa-json')

const app = new Koa()
const router = new Router()
const port = process.env.PORT || 3000

app
  .use(router.routes())
  .use(router.allowedMethods())
  .use(json({ pretty: false }))

router.get('/example', (ctx) => {
  ctx.body = { message: 'Koa.js: Looks good to me!' }
})

app.listen(3000)

Den Server ausführen

Starten Sie die Anwendung über die node Befehlszeile.

node index.js

Jetzt können Sie mit Postman eine Anfrage stellen, um die Antwort zu sehen.

Screenshot of making a request to the Koa.js example API using PostmanScreenshot of making a request to the Koa.js example API using Postman

Restify

Restify ist eine Node.js Framework, das für die Erstellung semantisch korrekter, produktionsreifer RESTful-Webdienste in großem Umfang optimiert ist.

Einen Server erstellen

Erstellen Sie ein Projektverzeichnis mit Ihrer IDE oder diesem Befehl.

mkdir rest-restify cd rest-restify

Erstellen Sie eine Datei für Ihre Anwendung (normalerweise app.js oder index.js).

touch index.js

Initialisieren Sie das Projekt mit NPM, indem Sie grundlegende NPM-Paketdateien erzeugen, ohne dass Sie Fragen mit dem y Flagge zu beantworten.

npm init -y

Installieren Sie die Restify Paket.

npm install restify

Ändern Sie index.js und fügen Sie den folgenden Quellcode hinzu, um Ihre Anwendung und die example Route.

// index.js

var restify = require('restify')

const port = process.env.PORT || 3000
var server = restify.createServer()

server.get('/example', (req, res, next) => {
  res.json({ message: 'Restify: Looks good to me!' })
  next()
})

server.listen(port, function() {
  console.log(`listening on port ${port}`)
})

Den Server ausführen

Starten Sie die Anwendung über die node Befehlszeile.

node index.js

Jetzt können Sie mit Postman eine Anfrage stellen, um die Antwort zu sehen.

Screenshot of making a request to the Restify example API using PostmanScreenshot of making a request to the Restify example API using Postman

Hapi

hapi ist ein extrem skalierbares und leistungsfähiges Framework für Node.js. Es wurde ursprünglich entwickelt, um den Black Friday-Verkehr von Walmart in großem Umfang zu bewältigen, hapi ist weiterhin die bewährte Wahl für Backend-Anforderungen in Unternehmen.

Einen Server erstellen

Erstellen Sie ein Projektverzeichnis mit Ihrer IDE oder diesem Befehl.

mkdir rest-hapi cd rest-hapi

Erstellen Sie eine Datei für Ihre Anwendung (normalerweise app.js oder index.js).

touch index.js

Initialisieren Sie das Projekt mit NPM, indem Sie grundlegende NPM-Paketdateien erzeugen, ohne dass Sie Fragen mit dem y Flagge zu beantworten.

npm init -y

Installieren Sie die hapi Paket.

npm install @hapi/hapi

Ändern Sie index.js und fügen Sie den folgenden Quellcode hinzu, um Ihre Anwendung und die example Route.

// index.js

const Hapi = require('@hapi/hapi')

const port = process.env.PORT || 3000

const init = async () => {
  const server = Hapi.server({
    port: port,
    host: 'localhost'
  })

  server.route({
    method: 'GET',
    path: '/example',
    handler: (req, h) => {
      return { message: 'hapi: Looks good to me!' }
    }
  })

  await server.start()
  console.log('Server running on %s', server.info.uri)
}

init()

Den Server ausführen

Starten Sie die Anwendung über die node Befehlszeile.

node index.js

Jetzt können Sie mit Postman eine Anfrage stellen, um die Antwort zu sehen.

Screenshot of making a request to the hapi example API using PostmanScreenshot of making a request to the hapi example API using Postman

Schlussfolgerung

Node.js kann als Barebone verwendet werden, aber Sie zahlen den Preis für die Unterstützung Ihrer eigenen Lösungen für Funktionen wie Routing und Antworttypen. Wenn Sie wissen, wie Sie Ihren Code am besten für die Leistung optimieren können, wird Ihre Anwendung schnell und mit wenig Paketaufblähung sein. Sie können Sie können Open-Source-Lösungen für Routing und andere Funktionen finden, ohne ein Framework wie das hier zu verwenden, aber an diesem Punkt können Sie genauso gut ein Framework verwenden.

Während Express.js nicht rechthaberisch ist, hat es eine Menge eingebauter Funktionen. Es ist nicht das schnellste, aber das bedeutet nicht, dass es langsam ist. Es ist sicherlich die einfachste Lösung für den Einstieg.

Restify wurde speziell für die Skalierung von RESTful-Anwendungen entwickelt und wird trotz seiner Einfachheit in einigen der größten Node.js Implementierungen der Welt verwendet.

hapi ist für eine schnelle Skalierung ausgelegt und bietet gleichzeitig alle Funktionen für den Einsatz in Unternehmen.

Koa.js ist eine async-freundliche Alternative zu Express.jsohne die eingebauten Funktionen.

Viele Entwickler entscheiden sich für die Variante mit dem besten Support oder der größten Community, was für mich eine klare Entscheidung zwischen hapi und Express.js.

Der gesamte Code

Sie finden ein einzelnes Repository mit dem gesamten Code auf GitHubfür den Fall, dass Sie Probleme mit den Beispielen hier haben.

Weitere Lektüre

Share:

https://a.storyblok.com/f/270183/250x250/451101b4f0/lukeoliff.png
Luke OliffVonage Ehemalige

Freundlicher Tech-Pädagoge, Familienvater, Verfechter der Vielfalt, streitet wahrscheinlich ein bisschen zu viel. Ehemals Backend-Ingenieur. Sprich mit mir über JavaScript (Frontend oder Backend), das erstaunliche Vue.js, DevOps, DevSecOps, alles was mit JamStack zu tun hat. Autorin auf DEV.to