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

5 façons de construire une API Node.js

Publié le May 11, 2021

Temps de lecture : 28 minutes

Cet article vous aidera à construire une petite API de cinq manières différentes, en utilisant Node.js et quatre frameworks populaires.

Express.js est l'un des nombreux frameworks HTTP disponibles pour Node.js. Nous l'utilisons pour un grand nombre de nos projets Node.js en raison de la grande variété d'addons et de sa large communauté de support.

Les similitudes entre la production de la même fonctionnalité dans différents frameworks peuvent aider à comprendre la mise en œuvre de l'une de nos démonstrations dans un framework différent de celui du tutoriel. Je l'espère.

Express.js

Nous commencerons par ce qui nous est familier. Express.js est un cadre de travail léger et "sans opinion" pour produire des applications Node.js pour produire des applications web et mobiles basées sur Node.js.

Créer un serveur

Créez un répertoire de projet avec votre IDE ou cette commande.

mkdir rest-express cd rest-express

Créez un fichier pour votre application (généralement app.js ou index.js).

touch index.js

Initialiser le projet avec NPM en générant des fichiers de paquets NPM de base sans avoir à répondre à des questions avec l'option y .

npm init -y

Installer le module Express.js .

npm install express

Modifier index.js et ajoutez le code source suivant pour créer votre application et la route 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}`)
})

Exécuter le serveur

Démarrez l'application à l'aide de la ligne de commande node ligne de commande. Vous avez peut-être l'habitude de npm start qui, dans de nombreux cas, exécute simplement cette commande sur votre fichier d'application.

node index.js

Vous pouvez maintenant envoyer une requête à l'aide de Postman pour voir la réponse.

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

Bibliothèques standard Node.js

Node.js dispose de paquets intégrés capables d'écouter les requêtes HTTP et de construire des réponses. Les autres frameworks simplifient cela, tout en ajoutant de nombreuses autres fonctionnalités que vous auriez dû construire autrement.

Créer un serveur

Créez un répertoire de projet avec votre IDE ou cette commande.

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

Créez un fichier pour votre application (généralement app.js ou index.js).

touch index.js

Nous n'avons pas besoin d'initialiser NPM tant que nous n'avons pas besoin d'installer des paquets. Pour cet exemple, nous utiliserons les paquets intégrés à Node.js nous n'avons donc pas besoin de NPM ou de fichiers de paquets (🎉🎉🎉🎉 ET PAS DE node_modules 🎉🎉🎉🎉).

Modifier index.js et ajoutez le code source suivant pour créer votre application et la route 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}`)
})

Exécuter le serveur

Démarrez l'application à l'aide de la ligne de commande node ligne de commande.

node index.js

Vous pouvez maintenant envoyer une requête à l'aide de Postman pour voir la réponse.

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

Koa.js

Koa.jsconçu par les mêmes développeurs que ceux à l'origine de Express.jsKoa.js a été conçu pour être plus léger et plus expressif, ce qui permet d'avoir un code plus fin et d'améliorer considérablement le traitement des erreurs. En tant que tel, il est livré avec moins de fonctionnalités intégrées et une large suite d'extensions communautaires.

Créer un serveur

Créez un répertoire de projet avec votre IDE ou cette commande.

mkdir rest-koa cd rest-koa

Créez un fichier pour votre application (généralement app.js ou index.js).

touch index.js

Initialiser le projet avec NPM en générant des fichiers de paquets NPM de base sans avoir à répondre à des questions avec l'option y .

npm init -y

Installer Koa.js et les paquets nécessaires au routage et à l'envoi de réponses JSON. Remarque : Koa ne supporte pas le routage (en dehors des conditions d'url), ni les réponses JSON, sans paquet supplémentaire.

npm install koa @koa/router koa-json

Modifier index.js et ajoutez le code source suivant pour créer votre application et la route 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)

Exécuter le serveur

Démarrez l'application à l'aide de la ligne de commande node ligne de commande.

node index.js

Vous pouvez maintenant envoyer une requête à l'aide de Postman pour voir la réponse.

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

Restifier

Restify est un logiciel Node.js optimisé pour construire des services web RESTful sémantiquement corrects et prêts à être utilisés en production à grande échelle.

Créer un serveur

Créez un répertoire de projet avec votre IDE ou cette commande.

mkdir rest-restify cd rest-restify

Créez un fichier pour votre application (généralement app.js ou index.js).

touch index.js

Initialiser le projet avec NPM en générant des fichiers de paquets NPM de base sans avoir à répondre à des questions avec l'option y .

npm init -y

Installer le Restify .

npm install restify

Modifier index.js et ajoutez le code source suivant pour créer votre application et la route 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}`)
})

Exécuter le serveur

Démarrez l'application à l'aide de la ligne de commande node ligne de commande.

node index.js

Vous pouvez maintenant envoyer une requête à l'aide de Postman pour voir la réponse.

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

Hapi

hapi est un framework extrêmement évolutif et performant pour Node.js. Développé initialement pour gérer à grande échelle le trafic du Black Friday de Walmart, hapi continue d'être le choix éprouvé pour les besoins de backend d'entreprise.

Créer un serveur

Créez un répertoire de projet avec votre IDE ou cette commande.

mkdir rest-hapi cd rest-hapi

Créez un fichier pour votre application (généralement app.js ou index.js).

touch index.js

Initialiser le projet avec NPM en générant des fichiers de paquets NPM de base sans avoir à répondre à des questions avec l'option y .

npm init -y

Installer le module hapi .

npm install @hapi/hapi

Modifier index.js et ajoutez le code source suivant pour créer votre application et la route 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()

Exécuter le serveur

Démarrez l'application à l'aide de la ligne de commande node ligne de commande.

node index.js

Vous pouvez maintenant envoyer une requête à l'aide de Postman pour voir la réponse.

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

Conclusion

Node.js peut être utilisé à l'état brut, mais vous en payez le prix en supportant vos propres solutions pour des fonctionnalités telles que le routage et les types de réponse. Votre application sera rapide, avec peu de paquets gonflés, si vous savez comment optimiser votre code pour la performance. Vous pouvez pouvez trouver des solutions open-source pour le routage et d'autres fonctionnalités, sans utiliser un framework comme ceux présentés ici, mais à ce stade, vous pouvez tout aussi bien utiliser un framework.

Alors que Express.js n'est pas spécialisé, il possède de nombreuses fonctionnalités intégrées. Il n'est pas le plus rapide, mais cela ne veut pas dire qu'il est lent. C'est certainement le plus facile à utiliser.

Restify est conçu spécialement pour mettre à l'échelle les applications RESTful et, malgré sa simplicité, il est utilisé dans certaines des plus grandes applications de Node.js dans le monde.

hapi est conçu pour évoluer rapidement tout en étant complet et prêt pour l'entreprise.

Koa.js est une alternative asynchrone à Express.jsmais sans les fonctionnalités intégrées.

Beaucoup de développeurs choisiront celui qui a le meilleur support ou la plus grande communauté, ce qui pour moi est un choix clair entre hapi et Express.js.

Tout le code

Vous pouvez trouver un dépôt unique avec tout le code sur GitHubau cas où vous auriez des difficultés avec les exemples présentés ici.

Pour en savoir plus

Partager:

https://a.storyblok.com/f/270183/250x250/451101b4f0/lukeoliff.png
Luke OliffAnciens de Vonage

Éducateur technique sympathique, père de famille, défenseur de la diversité, il discute probablement un peu trop. Anciennement ingénieur backend. Parlez-moi de JavaScript (frontend ou backend), de l'incroyable Vue.js, de DevOps, de DevSecOps, de tout ce qui concerne JamStack. Rédacteur sur DEV.to