对于大多数人来说,这可能是一个非常简单的答案,但我是后端新手。我使用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
提前感谢一吨!
来自这个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的授权标头