如何在 Express.js 服务器上执行 JWT API 请求? (edX API)

How to perform JWT API request on Express.js server? (edX API)

对于大多数人来说,这可能是一个超级简单的答案,但我是后端新手。我正在使用 Express.js 来实现我的服务器,我需要从 edX API 检索课程。以下是他们在文档中的示例请求:

curl -X GET -H "Authorization: JWT {access token}" https://api.edx.org/catalog/v1/catalogs/

而且我似乎找不到如何将其转换为 Express.js 实现的起点。我能够使用 'request-promise') 对另一个 API 执行类似的请求,但这是第一个需要 JWT Auth 的请求...

文档在这里:http://course-catalog-api-guide.readthedocs.io/en/latest/course_catalog/catalog.html#get-a-list-of-all-course-catalogs

提前致谢!

我们如何使用 HTTP AUTH 执行请求?

来自这个 Github 问题:Bearer Token

Please have a look at the Request documentation. Request-Promise works the same.

使用 request 模块:

request.get('https://some.server.com/',{"auth":{"bearer":"theToken"}})

使用 request-promise 模块:

我们知道它像 request 一样工作,所以我们可以像这样构建选项:

var options = {
 "url":APIURL,
 "headers":{"User-Agent":"client"},
 "auth":{"bearer":ACCESSTOKEN}
}

现在您甚至可以在 Express 应用程序中创建一个路由,使用客户端令牌执行查询:

app.get("/query-with-token/:accessToken",(req,res)=>{
 var accessToken = req.params.accessToken
 if(accessToken){
   console.log(accessToken);
   RequestAPI((error, apiResponse)=>{ //this would be a custom function of yours
     if(!error){res.send(apiResponse)}
     else{res.send("ERROR: "+error)}
   })
 }else{res.send("no token supplied")}
})

(出于安全原因不推荐使用此方法)

事实证明它与上面的非常相似,但设置不同(使用 request-promise 库):

request.get('https://api.edx.org/catalog/v1/catalogs/', {
 "url":APIURL,
 "headers":{
    "Authorization": "JWT {access token}",
    "User-Agent": "client"
  }
});

来源: