メインコンテンツへスキップ

reactチュートリアル6(API Routes)

· loading · loading ·
kiitosu
著者
kiitosu
画像処理やデバイスドライバ、データ基盤構築からWebバックエンドまで、多様な領域に携わってきました。地図解析や地図アプリケーションの仕組みにも経験があり、幅広い技術を活かした開発に取り組んでいます。休日は草野球とランニングを楽しんでいます。
目次

NextJSの学習をする。 以下のページを翻訳し記録する。 https://nextjs.org/learn-pages-router/basics/api-routes

  1. reactチュートリアル1(create a nextjs app)
  2. reactチュートリアル2(Navigate Between Pages)
  3. reactチュートリアル3(Assets, Metadata, and CSS)
  4. reactチュートリアル4(Pre-rendering and Data Fetching)
  5. reactチュートリアル5 (Dynamic Routes)
  6. reactチュートリアル6(API Routes)
  7. reactチュートリアル7(Deploying Your Next.js App)

Next.jsはAPI Routesをサポートしています。Node.jsサーバーレス関数として簡単にAPIエンドポイントを作ることができます。しかし、ブログアプリには必要ないので、ここでは使い方について簡単にお話します。

このレッスンで何を学ぶか
#

本レッスンでは以下について学びます。

  • API Routeの作り方
  • [API Routes]に付いての便利な情報

API Routesを作る
#

API RoutesでNext.jsアプリにAPIエンドポイントを作ることができます。pages/apiに 次の内容で function をつくります。

// req = HTTP incoming message, res = HTTP server response
export default function handler(req, res) {
  // ...
}

上記リクエストハンドラーの詳細についてはAPI Routes documentation.を御覧ください。

これらはサーバーレスファンクション(あるいはラムダ)としてデプロイされます。

簡単なエンドポイントを作成する
#

試してみましょう。pages/api に hello.jsというファイルを以下の内容で生成します。

export default function handler(req, res) {
  res.status(200).json({ text: 'Hello' });
}

http://localhost:3000/api/hello にアクセスしてみましょう。 {“text”:“Hello”} が見られるはずです。以下に注目です。

以上です!本レッスンのまとめの前にAPI Routesを使うコツについてお話しましょう。

API Routes Details
#

ここではAPI Routesについて知っておくべき重要な情報を紹介します。

getStaticProps や getStaticPathsからAPI Routeを取得してはいけない
#

getStaticPropsgetStaticPaths からAPI Routeを取得してはいけません。代わりにgetStaticPropsgetStaticPathsに直接サーバーサイドのコードを記載(あるいはヘルパー関数を呼び出し)しましょう。

なぜならgetStaticPropsgetStaticPathsはサーバーサイドでだけ動作し、クライアント側では動作しないからです。更に、これらの関数はブラウザ用のJSバンドルイメージに含まれません。つまり、ブラウザに送ることなくデータベースに直接クエリを実行するなどのコードを作成できます。更に詳細はWriting Server-Side codeを御覧ください。

良い使い方 : フォームの入力を操作する
#

API Routesの良い使い方はフォームのインプットの操作です。例えばAPI RouteにPOSTリクエストを送るフォームを作ることができます。次にデータベースに直接保存するコードを作ることができます。API Routeコードはクライアント側のバンドルコードになりません。なのでサーバーサイドのコードを安全に作成することができます。

export default function handler(req, res) {
  const email = req.body.email;
  // Then save email to your database, etc...
}

プレビューモード
#

Static GenerationはヘッドレスCMSからページを取得する時に便利です。しかしながらヘッドレスCMSでドラフトを作成していて即座にプレビューをほしいときには理想的ではありません。公開コンテンツではなくドラフトコンテンツをビルド時ではなくリクエスト時に欲しいとします。この特別な場合だけ静的生成を飛ばしたいとします。

Next.jsはこの問題を解決するためプレビューモードという機能を持ち、API Routeを使います。より詳しく知りたい場合はPreview Modeを参照してください。

Dynamic API Routes
#

API Routeは通常のページと同様に動的にすることができます。より詳しくはDynamic API Routesを参照して下さい。

以上です!
#

次の基礎レッスンの最後ではNext.jsアプリを製品デプロイする方法を説明します。

Reply by Email

関連記事

nextjs app router と pagesディレクトリ
· loading · loading
inject_lambda_context で表示されるcold_startがTrueになる条件
· loading · loading
aws-vaultのsessionの時間制限
· loading · loading