基于 API Key 的 Node JS Web 服务

3

我有一些使用Node.js和Express编写的Web服务。我想要使用基于API密钥的服务。假设我目前有一个名为“getRooms”的Web服务。

app.get('/getRooms/', function (req, res) {
    'use strict';
    N.API.getRooms(function (rooms) {
        res.send(rooms);
    },function (err) {
        res.send(err);
    });
});

我通过调用 https://xxxxxx/getRooms 使用它。 现在我想使用 https://xxxxxx/APIKEY/getRooms。该 APIKEY 是不同客户的不同的。那么,我如何修改我的 web 服务来实现这一点?

2个回答

4
你可以将其修改为/APIKEY/getrooms以实现所需的结果。然而,如果您在请求标头中发送APIKEY,则会更好,但显然这取决于您的情况。

请问能否解释一下在/xxxxx处的路由是什么?这样我就可以发布了。 - Bobby
我已经编辑了答案检查。你只需要在/getrooms/之前放置APIKEY。 - Sohaib Farooqi
API密钥将不同,这些密钥是来自MongoDB的_id。那么我如何静态定义APIKEY? - Bobby
你可以使用参数 /:apikey/getrooms 进行请求,例如: `/c822c1b63853ed273b89687ac505f9fa/getrooms. ` `/123456789/getrooms.` `/getrooms` 将返回 404。 - Sohaib Farooqi
是的,这就是我想要的。让我先试试。 :) - Bobby

0

你可以像这样修改你的代码

app.get('/getRooms?api_key=xxxx', function (req, res) {
    console.log(req.query.api_key) // print xxxx when user request to https://xxxxxx/getRooms/APIKEY
});

我考虑过这个过程,但如果我已经有一个用于该Web服务的参数呢?例如 app.get('/getRoom/:room', function (req, res) {}) - Bobby
1
所以你需要设置用户在请求头中发送带有api_key的请求。然后在服务器端,你可以通过req.headers['api_key']获取用户的api key。 - KibGzr
将其放在头部是一个好的方法,当它将从代码中调用时。对于GET服务,如果我们在URL中访问它,则头部部分将不起作用。 - Bobby

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接