我对此并不陌生,在搜索表单中输入术语并重定向到包含结果的新页面后,尝试调用外部API。这就是我到目前为止所拥有的。
const express = require('express');
const request = require('request');
const path = require('path');
const app = express();
const PORT = 3000;
const url =
'https://www.example.com/api/search_term?query=';
app.set('views', path.join(__dirname, 'views'));
app.set('view engine', 'pug');
app.listen(PORT, () => {
console.log(`Example app listening on port ${PORT}!`);
});
app.get('/search', (req, res) => {
res.render('search', { title: 'Hey', message: 'Hello there!' });
});
app.post('/results', (req, res) => {
const term = req.body.term;
request(`${url}term`, (error, response, body) => {
if (!error && response.statusCode === 200) {
console.log(body);
}
});
});
我的PUG文件现在只是搜索表。由于我正在调用外部api,因此我对从get
请求进行重定向感到困惑。
我想加载该应用程序,将搜索表单设置为主页,提交要搜索的字词,然后重定向到包含结果的另一页。
我是否以为我需要重定向到另一条get
路由,以便从包含搜索表单的初始get
路由中“抢走”结果,所以我错了
答案 0 :(得分:1)
我是否以为我需要重定向到另一个“获取”包含搜索表单的初始“获取”路由结果的获取路由?
是的,你是
您需要两条路由,完全不需要重定向。
浏览器应请求第二条路由,因为其URL是在表单的action
属性中指定的。
console.log(body);
应该替换为对res.render
的调用,其中包括要在模板中呈现的搜索结果。