[英]Express Middleware just to handle requests between React and Python
[英]Handling route requests between React and Express
我正在使用 React 和 Express 创建一个具有登录和注册功能的应用程序。 我正在使用 Formik 处理表单数据以及发布它:
> const initialValues={{username:"", email:"", password:""}}
onSubmit ={ async (values, { setSubmitting }) => {
const value = values.username+'/'+values.email+'/'+values.password;
const res = await fetch(`http://localhost:5000/newuser/${value}`, {
method: 'GET',
mode: 'cors',
headers: {
'Content-Type': 'application/json',
'Access-Control-Allow-Origin': '*'
}}).then(response => response.json());
console.log(res);
values = initialValues;
setSubmitting(false);
}
然后将其发送到 express 应用程序,并通过以下路由:
> app.get('/newuser/:username/:email/:password', (req, res) => {
const username = req.params.username;
const email = req.params.email;
const password = req.params.password;
let sql = `Insert into users (username, useremail, userpass) values ('${username}', '${email}', '${password}')`;
query = db.query(sql, (err, results) => {
if(err){throw err;}
res.send("New user added you can login now");
});
});
我能够将这些用户保存到数据库中,但是我对这段代码有以下两个问题,我能够从各种不同的视频、教程、问题和文档中拼凑出来:
app.get('/newuser/:username/:email/:password', (req, res)
这是我可以将表单数据导入 express 的唯一方法,如果我不包含分号并使用 req.params 调用这些值,我会收到“404 未找到错误”,因为 3 个值是空的。 如果我尝试通过 req.body 访问它们,它们仍然显示为空。 我试图对它们进行 JSON.stringify,并且我在 express 应用程序中使用了 body-parser。 我的问题是如何使用 req.body 访问这 3 个值(用户名、电子邮件、密码)? 如果我想从我的浏览器访问这条路线,还有一种特定的方式我应该格式化它们,例如http://localhost:5000/users?username&email&password
要访问正文,请使用method:"POST"
而不是 GET。
let response = await fetch(`http://localhost:5000/newUser`, {
method: 'POST',
headers: {
'Accept': 'application/json',
'Content-Type': 'application/json',
},
body: JSON.stringify(values),
})
if (response.errors) {
console.error(response.errors)
}
let responseJson = await response.json()
if (responseJson['message']) {
console.log(responseJson['message'])
}
服务器端使用这样的东西:
import cors from 'cors'
...
let app = express()
.use(cors())
.post('/newUser', (req, res) => {
let {username, email, password} = req.body
...
// If all ok
res.status(200).send({message: "User created"})
// If there's an issue
res.status(500).send({message: "oups"})
})
...
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.