Как выполнить запрос API JWT на сервере Express.js? (edX API) - PullRequest
0 голосов
/ 06 мая 2018

Это, наверное, очень простой ответ для большинства людей, но я новичок в бэк-энде. Я использую Express.js для реализации своего сервера, и мне нужно получить курсы из API edX. Ниже приведен пример запроса, который они имеют в своих документах:

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

и я не могу найти отправную точку для того, чтобы перевести это в реализации Express.js. Мне удалось выполнить аналогичные запросы к другому API, используя функцию «запрос-обещание»), но это первое, что требует аутентификации JWT ...

Документы здесь: http://course -catalog-api-guide.readthedocs.io / en / latest / course_catalog / catalog.html # получить список всех каталогов курса

За тонну заранее спасибо!

Ответы [ 2 ]

0 голосов
/ 13 июня 2018

Оказывается, это было очень похоже на вышеприведенное, но с другой настройкой (с использованием библиотеки request-обещания ):

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

Источник: Использование авторизациизаголовок с выборкой в ​​React Native

0 голосов
/ 06 мая 2018

Как мы можем выполнить запрос с HTTP AUTH?

Из этого выпуска Github: Жетон на предъявителя

Пожалуйста, ознакомьтесь с Запросить документацию . Заявка-Обещание работ то же самое.

С модулем request:

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

С модулем request-promise:

Мы знаем, что он работает как request, поэтому мы могли бы создать такие параметры:

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

Так что теперь вы можете даже создать маршрут в своем экспресс-приложении, которое выполняет запрос с использованием токена на стороне клиента:

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

(этот подход не рекомендуется по соображениям безопасности)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...