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

Node.js APIを構築する5つの方法

最終更新日 May 11, 2021

所要時間:24 分

この記事では、以下の5つの方法で小さなAPIを構築する方法を紹介する。 Node.jsと4つの人気のあるフレームワークを使って、5つの方法で小さなAPIを構築する方法を紹介します。

Express.jsで利用可能なHTTPフレームワークのひとつである。 Node.js.私たちは、多くの Node.jsのコンテンツの多くに使用しています。

異なるフレームワークで同じ機能を作るという類似点は、チュートリアルのものとは異なるフレームワークでデモの1つを実装する際に、何らかのヒントを与えてくれるかもしれません。期待しています。

エクスプレス

まずはお馴染みのものから。 Express.jsを生成するための軽量で「独裁的」なフレームワークである。 Node.jsベースのウェブ・モバイル・アプリケーションを作成するための軽量で「独創的」なフレームワークだ。

サーバーの作成

IDEまたはこのコマンドでプロジェクト・ディレクトリを作成する。

mkdir rest-express cd rest-express

アプリケーション用のファイル(通常は app.jsまたは index.js).

touch index.js

フラグで質問に答えることなく、基本的な NPM パッケージファイルを生成して NPM でプロジェクトを初期化します。 yフラグを使います。

npm init -y

インストール Express.jsパッケージをインストールする。

npm install express

を修正する。 index.jsを修正し、以下のソースコードを追加して、アプリと exampleルートを作成します。

// 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}`)
})

サーバーの実行

コマンドラインから nodeコマンドラインを使ってアプリを起動する。コマンドラインを使ってアプリを起動する。 npm startに慣れているかもしれないが、多くの場合、アプリケーション・ファイル上でこのコマンドを実行するだけだ。

node index.js

これでPostmanを使ってリクエストし、レスポンスを見ることができる。

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

Node.js標準ライブラリ

Node.jsには、HTTPリクエストをリッスンし、レスポンスを構築する組み込みパッケージがある。他のフレームワークはこれを簡素化し、他の方法でビルドしなければならない機能を複数追加している。

サーバーの作成

IDEまたはこのコマンドでプロジェクト・ディレクトリを作成する。

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

アプリケーション用のファイル(通常は app.jsまたは index.js).

touch index.js

パッケージのインストールが必要になるまで、NPMを初期化する必要はない。この例では Node.jsに組み込まれたパッケージを使うので、NPMもパッケージファイルも必要ありません(🎉🎉🎉 AND NO node_modulesディレクトリ🎉🎉)。

を修正する。 index.jsを修正し、以下のソースコードを追加して、アプリと exampleルートを作成します。

// 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}`)
})

サーバーの実行

コマンドラインから nodeコマンドラインを使用してアプリを起動します。

node index.js

これでPostmanを使ってリクエストし、レスポンスを見ることができる。

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

Koa.js

Koa.jsの開発者たちによって設計された。 Express.jsKoa.jsはExpress.jsの開発者と同じ開発者によって設計され、より軽量で表現力豊かで、コードをより細くし、エラー処理を大幅に向上させるように作られている。Koa.jsは、Express.jsの開発者と同じ開発者によって設計された。

サーバーの作成

IDEまたはこのコマンドでプロジェクト・ディレクトリを作成する。

mkdir rest-koa cd rest-koa

アプリケーション用のファイル(通常は app.jsまたは index.js).

touch index.js

フラグで質問に答えることなく、基本的な NPM パッケージファイルを生成して NPM でプロジェクトを初期化します。 yフラグを使います。

npm init -y

インストール Koa.jsと、JSONレスポンスのルーティングと送信をサポートするパッケージをインストールします。 注意してください:Koaは、ルーティング(url条件以外)、JSONレスポンスをサポートしていません。

npm install koa @koa/router koa-json

を修正する。 index.jsを修正し、以下のソースコードを追加して、アプリと exampleルートを作成します。

// 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)

サーバーの実行

コマンドラインから nodeコマンドラインを使用してアプリを起動します。

node index.js

これでPostmanを使ってリクエストし、レスポンスを見ることができる。

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

レスティファイ

レスティファイNode.jsフレームワークです。

サーバーの作成

IDEまたはこのコマンドでプロジェクト・ディレクトリを作成する。

mkdir rest-restify cd rest-restify

アプリケーション用のファイル(通常は app.jsまたは index.js).

touch index.js

フラグで質問に答えることなく、基本的な NPM パッケージファイルを生成して NPM でプロジェクトを初期化します。 yフラグを使います。

npm init -y

インストール Restifyパッケージをインストールする。

npm install restify

を修正する。 index.jsを修正し、以下のソースコードを追加して、アプリと exampleルートを作成します。

// 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}`)
})

サーバーの実行

コマンドラインから nodeコマンドラインを使用してアプリを起動します。

node index.js

これでPostmanを使ってリクエストし、レスポンスを見ることができる。

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

ハピ

hapiのためのフレームワークです。.当初はウォルマートのブラックフライデーのトラフィックを大規模に処理するために開発されました、 hapiは、エンタープライズグレードのバックエンドニーズのための実証済みの選択肢であり続けています。

サーバーの作成

IDEまたはこのコマンドでプロジェクト・ディレクトリを作成する。

mkdir rest-hapi cd rest-hapi

アプリケーション用のファイル(通常は app.jsまたは index.js).

touch index.js

フラグで質問に答えることなく、基本的な NPM パッケージファイルを生成して NPM でプロジェクトを初期化します。 yフラグを使います。

npm init -y

インストール hapiパッケージをインストールする。

npm install @hapi/hapi

を修正する。 index.jsを修正し、以下のソースコードを追加して、アプリと exampleルートを作成します。

// 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()

サーバーの実行

コマンドラインから nodeコマンドラインを使用してアプリを起動します。

node index.js

これでPostmanを使ってリクエストし、レスポンスを見ることができる。

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

結論

Node.jsは素のままでも使えますが、ルーティングやレスポンス・タイプといった機能に対する独自のソリューションをサポートする代償を払うことになります。パフォーマンスのためにコードを最適化する最善の方法を熟知していれば、パッケージの肥大化はほとんどなく、アプリケーションは高速になります。あなたは あなたはルーティングやその他の機能については、ここで紹介したようなフレームワークを使わなくても、オープンソースのソリューションを見つけることができます。

一方 Express.jsはは独創的だが、多くの組み込み機能がある。最速ではないが、遅いわけではない。Express.jsは最も簡単に使い始めることができる。

Restifyは、RESTfulなアプリケーションをスケールするために意図的に構築されており、そのシンプルさにもかかわらず、いくつかの最大規模の Node.jsで使用されています。

hapiは、完全な機能とエンタープライズ対応でありながら、高速に拡張できるように構築されています。

Koa.jsExpress.jsのに代わる非同期処理に特化したソフトウェアです。

多くの開発者は、最高のサポートやコミュニティがある方を選ぶでしょう。 hapiExpress.js.

すべてのコード

すべてのコードが GitHubの単一リポジトリにすべてのコードがあります。にある。

さらに読む

シェア:

https://a.storyblok.com/f/270183/250x250/451101b4f0/lukeoliff.png
Luke Oliffヴォネージの卒業生

フレンドリーな技術教育者、家族思い、多様性チャンピオン、たぶんちょっと議論しすぎ。元バックエンドエンジニア。JavaScript(フロントエンドまたはバックエンド)、素晴らしいVue.js、DevOps、DevSecOps、JamStackのことなら何でも。DEV.toのライター