考虑构建用于从公共 API 获取数据的小型 MERN 堆栈
在客户端,我有一个表单,其中有两个输入,用于输入搜索条件
我正在使用 axios 将输入数据发送到服务器端
const newData = {
input1: entering.input1,
input2: entering.input2
};
axios.post('http://localhost:5000/search', newData);
setEntering({
input1: '',
input2: ''
});
在服务器端,我使用POST方法在路由中获取输入数据
我可以用查询字符串
router.route("/search").post(bodyParser.urlencoded({extended: false}), (req, res) => {
console.log(req.body); // { input1: 'qwerty', input2: '123456' }
let input1_data = req.body.input1;
let input2_data = req.body.input2;
let qs = `https://public.api/endpoint/search?letters=${input1_data}&digits=${input2_data}`;
console.log(qs); // https://public.api/endpoint/search?letters=qwerty&digits=123456
});
我的烦恼就从这里开始
我想获取search?letters=qwerty&digits=123456端点
使用 GET 方法,如下所示:
router.route("/search").get((req, res) => {
axios({
method: 'GET',
url: qs
}).then((i) => {
res.json(i.data);
}).catch((err) => {
console.error(err)
});
});
我不知道如何使 'qs' 变量在 GET 路由中可用
我试图在 POST 路由中嵌套 GET 路由,如下所示:
router.route("/search").post(bodyParser.urlencoded({extended: false}), (req, res) => {
let input1_data = req.body.input1;
let input2_data = req.body.input2;
let qs = `https://public.api/endpoint/search?letters=${input1_data}&digits=${input2_data}`;
router.route("/search").get((req, res) => {
axios({
method: 'GET',
url: qs
}).then((i) => {
res.json(i.data);
}).catch((err) => {
console.error(err)
});
});
});
但它只能工作一次,如果我再次进入输入并输入新数据,
我从 localhost:5000/search 获取旧数据,即使 'qs' 变量有新值
有没有办法在 POST 路由中访问 qs 变量?