【问题标题】:GET/POST methods on ExpressExpress 上的 GET/POST 方法
【发布时间】:2020-11-20 16:31:56
【问题描述】:

我正在使用 express 配置服务器。

我的问题与项目本身无关,因为它运行良好。

我只是有点怀疑为什么我必须使用 GET,而对我来说使用 POST 更有意义。

所以,简而言之,我在服务器端配置 API 密钥并在客户端获取它,以便我可以使用它。

这是服务器端的sn-p:

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 方法。

谢谢!

【问题讨论】:

    标签: javascript express http


    【解决方案1】:

    您没有向服务器发送任何 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})
    })
    

    然后服务器发送响应。

    【讨论】:

    • 非常感谢托马斯!我得到了它。我不知道透视部分。
    【解决方案2】:

    此代码从服务器返回 API 密钥。它不会将它从客户端发送到服务器。

    app.get('/api', (req,res) => {
        res.send({key: apiKey})
    }
    

    res.send()
    

    函数是构造服务器返回给客户端的响应。

    【讨论】:

      【解决方案3】:

      通常,当客户端必须从服务器读取一些数据时,您使用GET 方法,在这种情况下,您要读取服务器中定义的 API_KEY。 GET 没有正文,但每个请求都可以通过在查询字符串中传递参数来实现参数化。
      另一方面,当您必须在服务器上更新或创建实体时,这就是POST(或PUT)开始行动的时候。在这里,您在请求正文中传递您的数据。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2011-10-30
        • 1970-01-01
        • 2012-12-08
        • 2017-10-05
        • 2022-11-28
        • 2015-03-30
        • 1970-01-01
        相关资源
        最近更新 更多