[英]chain and mix express router (.route) and (.get, .post .. etc) methods
[英]GET/POST methods on Express
我正在使用 express 配置服务器。
我的问题与项目本身无关,因为它运行良好。
我只是有点怀疑为什么我必须使用 GET,而对我来说使用 POST 更有意义。
因此,简而言之,我正在服务器端配置一个 API 密钥并在客户端获取它,以便我可以使用它。
这是服务器端的片段:
const apiKey = process.env.API_KEY;
console.log(`Your API key is ${apiKey}`);
const dataObject ={};
app.get('/api', (req,res) => {
res.send({key: apiKey})
})
app.get('/all', sendData = (req,res) => {
res.send(dataObject)
})
app.post('/addText', (req,res) => {
let newEntry = {
agreement = req.body.agreement,
subjectivity = req.body.subjectivity
}
dataObject = newEntry;
res.send(dataObject);
} )
然后在客户端,我在 '/api' 路径上获取:
const getApiKey = async () => {
// Getting API key from server
const request = await fetch('/api');
try {
const data = await request.json();
console.log(data);
return data;
}catch(error) {
console.log('ERROR', error);
}
}
好的,这一切正常,但我的问题是:
fetch
检索此密钥。 但是,如果我将 api 密钥发送到此路径,为什么我使用 GET 而不是 POST?对不起,如果这似乎是一个愚蠢的问题,但我很难理解 GET 方法。
谢谢!
您没有向服务器发送任何 API 密钥。 服务器正在向客户端发送 API 密钥作为响应。 客户端使用 GET 请求从 /api 获取 API 密钥。 方法的名称(GET、POST、PUT、DELETE...)是从客户端的角度来看的。
“然后在客户端,我在'/api'路径上获取:”不。首先客户端发送请求
const request = await fetch('/api');
try {
const data = await request.json();
console.log(data);
return data;
}catch(error) {
console.log('ERROR', error);
}
这会触发回调
app.get('/api', (req,res) => {
res.send({key: apiKey})
})
并且服务器发送响应。
此代码从服务器返回 API 密钥。 它不会将它从客户端发送到服务器。
app.get('/api', (req,res) => {
res.send({key: apiKey})
}
这
res.send()
函数正在构造服务器返回给客户端的响应。
通常,当客户端必须从服务器读取一些数据时,您使用GET
方法,在这种情况下,您希望读取服务器中定义的 API_KEY。 GET
没有正文,但每个请求都可以通过在查询字符串中传递参数来进行参数化。
另一方面,当您必须在服务器上更新或创建实体时,这就是POST
(或PUT
)生效的时候。 在这里,您在请求正文中传递您的数据。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.