0

对于大多数人来说,这可能是一个超级简单的答案,但我是后端新手。我正在使用 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

提前致谢!

4

2 回答 2

2

我们如何执行请求HTTP AUTH

来自这个 Github 问题:Bearer Token

请查看请求文档。Request-Promise 的工作原理相同。

使用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")}
})

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

于 2018-05-06T19:13:19.270 回答
0

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

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

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

于 2018-06-13T14:59:11.817 回答