如何在 Express.js 服务器上执行 JWT API 请求? (edX API)
Posted
技术标签:
【中文标题】如何在 Express.js 服务器上执行 JWT API 请求? (edX API)【英文标题】:How to perform JWT API request on Express.js server? (edX API) 【发布时间】:2018-10-16 14:45:05 【问题描述】:对于大多数人来说,这可能是一个超级简单的答案,但我是后端新手。我正在使用 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
提前致谢!
【问题讨论】:
【参考方案1】:我们如何使用HTTP AUTH
执行请求?
来自这个 Github 问题:Bearer Token
请查看Request documentation。请求-承诺有效 一样的。
使用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)
elseres.send("ERROR: "+error)
)
elseres.send("no token supplied")
)
(出于安全原因,不建议使用此方法)
【讨论】:
【参考方案2】:事实证明它与上面的超级相似,但设置不同(使用 request-promise 库):
request.get('https://api.edx.org/catalog/v1/catalogs/',
"url":APIURL,
"headers":
"Authorization": "JWT access token",
"User-Agent": "client"
);
来源:Using an authorization header with Fetch in React Native
【讨论】:
以上是关于如何在 Express.js 服务器上执行 JWT API 请求? (edX API)的主要内容,如果未能解决你的问题,请参考以下文章
Node.js - Express.js JWT 总是在浏览器响应中返回一个无效的令牌错误