繁体   English   中英

Express 上的 GET/POST 方法

[英]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);
        }
    }

好的,这一切正常,但我的问题是:

  • 在服务器端的第一个 GET 中,我知道我将 API 密钥发送到“/api”路径,以便我可以在客户端使用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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM