提问者:小点点

如何在Express. js服务器上执行JWTAPI请求?(edXAPI)


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

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

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

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

提前感谢一吨!


共2个答案

匿名用户

来自这个Github问题:无记名代币

请查看请求留档。请求-promise的工作原理相同。

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

我们知道它作为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")}
})

(出于安全原因,不建议使用此方法)

匿名用户

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

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

来源:在React Native中使用带有Fetch的授权标头