📖

Next.jsでServer Actionを理解する

2025/02/11に公開

Motivation

Reactとサーバを連携させるサンプルコードを書くときに、Railsのコード書くのもなぁー。
という時に使えるかなと思って、今更ながら理解することにしました。

本題

nextの準備自体は、npx create-next-app@latestでサクッと行って、あとはこの記事を読みました。

まずはこんな感じでactionを作りました
https://github.com/na8esin/next-practice/blob/9218277a2f07aee61b79a3f41d64f02a751a2e8a/app/actions.ts
明らかに、ブラウザ上では動かなそうなコード(nodeでは動きそう)を書いてみました。

crypto.randomBytes(16)は、ブラウザでも動くみたいですが、pwdは流石に無理かなと思い書いてみました。

また、↑のactionを呼び出すボタンをこんな感じで作ります。
https://github.com/na8esin/next-practice/blob/9218277a2f07aee61b79a3f41d64f02a751a2e8a/app/button.tsx
これを、page.tsx辺りで呼び出してあげて、npm run devすると、

こんな感じの画面が開いて、Createのボタンを押したところです↓

↑レスポンスがちゃんと帰ってきてます。

レスポンスヘッダーはこんな感じ↓

Next-Actionというヘッダーが関数を一意に特定しているっぽいですね。
あとは、POSTでリクエストしていることがわかります。

postmanでリクエストするとこんな感じで返ってきます。

bodyも一応こんな感じで入れないとjsonのパースエラーで怒られます。

PWDButtonの方はこんな感じで返ってきます。

ディレクトリ情報がちゃんと見れますね。
商用のコードではやらないでください。(やる人なんていないと思いますが。。。)

最後にコンソールログです。

サーバから帰ってきた結果が、client側のコードで利用できることが確認できると思います。

しくみのテックブログ

Discussion