Express で REST APIs をセッティングします。

サーバーをセッティングする

まずは、ターミナルでnpm initを実行します。

次に、ターミナルでnpm install --save express body-parserを実行して、Express と body-perser をインストールします。

また、サーバーを自動で更新するために、ターミナルでnpm install --save-dev nodemonを実行して、Express と nodemon をインストールします。

npm startで nodemon が実行できるように、package.json の script の内容を修正します。

"scripts": {
  "start": "nodemon index.js"
},

inde.js を作成し、expressを呼び出します。

const express = require("express")
const app = express()

listen を使って、サーバーが立ち上がる様にします。

app.listen(8000, () => console.log("Server is running ..."))

ターミナルでnpm startを実行して、サーバーを起動してみます。

image2

サーバーが起動しました。

データを取得する

次に、サーバーのデータを取得してみます。

ルート処理するために、routes フォルダを作成し、その中に book.js を作成します。

expressを呼び出します。

const express = require("express")

expressRouterを使います。

const router = express.Router()

routerをエクスポートしましょう。

module.exports = router

次に、データを処理するために、コントローラーを作成します。

controllers フォルダを作成し、その中に、book.js を作成します。

getBook を作成し、その中に JSON データを入れます。

exports.getBook = (req, res, next) => {
  res.json({
    books: [
      {
        id: "aaaaaa",
        title: "オズの魔法使い",
        content: "前に進んでいったら、何とかなるという話。",
      },
    ],
  })
}

ステータスコードも送信する様にします。

exports.getBook = (req, res, next) => {
  res.status(200).json({
    books: [
      {
        id: "aaaaaa",
        title: "オズの魔法使い",
        content: "前に進んでいったら、何とかなるという話。",
      },
    ],
  })
}

routes フォルダの book.js に戻り、コントローラーと繋げます。

const bookController = require("../controllers/book")

router.get("/get", bookController.getBook)

index.js で、router と繋げましょう。

app.use("/book", bookRoutes)

一度確認するために、http://localhost:8000/book/get を開きます。

image3

ブラウザに、コントローラーで設定したデータが表示されました。

Postman を使って、GET データを確認してみると、

image4

Status200 が返ってきて、データも取得できています。

データを送信する

次は、POST でデータを送信してみます。

controllers フォルダの book.js を開きます。

postBook を作成し、データを送信する内容を書いていきます。

exports.postBook = (req, res, next) => {}

リクエストから title を content を取得します。

exports.postBook = (req, res, next) => {
  const title = req.body.title
  const content = req.body.content
}

送信できた場合のメッセージと、送信データ内容を書きます。

id は、ランダムの文字列にします。

exports.postBook = (req, res, next) => {
  const id = (Math.random() + 1).toString(36).slice(2, 8)
  const title = req.body.title
  const content = req.body.content
  res.json({
    message: "Data transmission completed!",
    post: { id: id, title: title, content: content },
  })
}

送信できた場合のステータスコードを追加します。

exports.postBook = (req, res, next) => {
  const id = (Math.random() + 1).toString(36).slice(2, 8)
  const title = req.body.title
  const content = req.body.content
  res.status(201).json({
    message: "Data transmission completed!",
    post: { id: id, title: title, content: content },
  })
}

送信コントローラーが完成しました。

routes フォルダの book.js を開きます。

getの場合と同様に、postpostBookを実行できる様にします。

router.post("/post", bookController.postBook)

index.js で body-parser を呼び出します。

const bodyParser = require("body-parser")

json を解析できるように、body-parser を使用します。

app.use(bodyParser.json())

これで一通り完成しましたので、Postman で確認してみます。

image5

実行すると、

image6

Status201 が返ってきて、メッセージと送信内容が表示されました。

ブログ一覧