質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
Express

ExpressはNode.jsのWebアプリケーションフレームワークです。 マルチページを構築するための機能セットおよびハイブリッドのWebアプリケーションを提供します。

React.js

Reactは、アプリケーションのインターフェースを構築するためのオープンソースJavaScriptライブラリです。

Q&A

解決済

2回答

6161閲覧

React + Express axiosでパラメータを受け取りたい

2_34_koki

総合スコア67

Express

ExpressはNode.jsのWebアプリケーションフレームワークです。 マルチページを構築するための機能セットおよびハイブリッドのWebアプリケーションを提供します。

React.js

Reactは、アプリケーションのインターフェースを構築するためのオープンソースJavaScriptライブラリです。

0グッド

0クリップ

投稿2020/04/06 14:50

[やりたいこと]
クライアント側からaxiosを使用して、postリクエストを行い、それをサーバー側でキャッチする。

[問題]
現状、axiosを使ってpostリクエストを送りそれをサーバサイドでキャッチしたいが、リクエストパラメータが空になってしまう。
下記にコードを示す。

[やったこと]
postmanでリクエストパラメータつきでpostするとちゃんと受け取ることができる。
axiosのパラメータで{params: {data: data}}の形と{data: data}の形で両方試したが、受け取れない

//クライアント側 const CreateDB = (value) => { console.log(value); axios .post("/api", { patams: { text: value, }, }) .then(function (response) { console.log(response.data); }) .catch((err) => { console.log("エラーの内容です。"); console.log(err); }); console.log("conduct CreateSB"); };
//サーバーサイド1 const express = require("express"); const app = express(); var router = require("./api/todo"); app.use("/api", router); app.listen(process.env.PORT | 3000, () => { console.log("App listening on port 3000!"); });
//サーバーサイド2 router.post("/", (req, res) => { console.log("リクエストの内容は"); console.log(req.query); //ここが空になってしまう。 const value = req.query; pool.connect((err, client) => { if (err) { console.log(err); } else { client.query( "Insert into todos (text) values ($1)", [value.text], (err) => { if (err) { console.log(err); } else { res.json({ message: "success to create data", }); } } ); } }); });

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

自己解決

サーバーサイドのルートファイルに

app.use(express.json()); // for parsing application/json app.use(express.urlencoded({ extended: true })); // for parsing application/x-www-form-urlencoded

を追加することができた。下記の内容を参考にした。
https://teratail.com/questions/118630

投稿2020/04/07 02:15

2_34_koki

総合スコア67

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

クライアント中で、axiosの使い方が間違っているように見えます。

次の書き方ではどうでしょうか?

axios .post("/api", { text: value, })

質問中にあるparamsはGETリクエスト用の書き方のように思われます。
合わせて公式のREADMEを確認をおすすめします。

https://github.com/axios/axios

投稿2020/04/06 18:43

mottox2

総合スコア299

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

2_34_koki

2020/04/07 02:02

やってみたんですけど、ダメでした。試しにaxios.getの方で同じようにパラメータを渡してみたのですが、yやっぱり、queryの中身が空になってしまいます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問