Как мне получить доступ к API Monica HQ с помощью Python?

#python #rest #request

#питон #rest #запрос #python

Вопрос:

У меня возникли некоторые проблемы с доступом к API для Monicahq.com . Я очень молодой разработчик, и в настоящее время я изучаю, как использовать запросы GET для извлечения данных из веб-приложения с использованием Python.

Я просмотрел несколько онлайн-руководств, и стало ясно, что мне нужно использовать пакет «запросы», а также предоставить свой токен доступа (который я получил). Я просто не уверен, какой код писать. Это то, что у меня есть до сих пор:

 import requests

response = requests.get('https://app.monicahq.com/settings/api', headers={'authorization': 'Token XXXXXX'})

print(response.text)
  

Все, что я получаю, — это html-страница для Моники. Я думаю, проблема может заключаться в том, что я не использую правильную ссылку, но я не уверен точно, какую ссылку я должен использовать для подключения к серверу? И тогда как бы я получил JSON для напоминаний, которые у меня есть в моей учетной записи? Документация по API находится здесь, если это кому-нибудь поможет. https://www.monicahq.com/api/reminders

Извините, если это вопрос супер новичка, но это то, чем я сейчас являюсь, и любая помощь будет оценена по достоинству!

Комментарии:

1. что вы ожидаете получить в ответ? обычно api имеет некоторые другие параметры, которые вам нужно передать

2. также попробуйте https://app.monicahq.com/settings/api/reminders/ вместо URL-адреса

3. Я пытаюсь получить JSON-файл напоминаний, которые у меня появляются! Я хочу иметь доступ к этим напоминаниям, чтобы, возможно, их можно было отправить мне по электронной почте, через IFTTT или что-то в этом роде.

4. Обычно заголовок Authorization , а не authorization . Обратите внимание, что оно должно быть прописным, а не строчным. Вы пробовали менять нижний регистр заголовка на верхний регистр?

Ответ №1:

Этот API кажется действительно убогим, но я думаю, что это работает.

 import requests
from bs4 import BeautifulSoup as bs
import json

url=r'https://monicahq.com/api/reminders'
headers={
'Authorization': 'Bearer XXXXXXXXX'
}
#get response
r=requests.get(url,headers=headers)
#make soup
soup=bs(r.text,'html.parser')
#extract json out of mess of html
j=json.loads(soup.find('code',{'class':'json'}).text)
#now j is the json object
print(j)
>{'data': [{'id': 2,
   'object': 'reminder',
   'title': 'Wish happy birthday to Danny',.....
  

Документация устарела или есть какая-то другая проблема, я никогда не мог заставить api возвращать только json, как он говорит.

я также рекомендую вам удалить свой ключ api из вопроса.

Комментарии:

1. Большое спасибо! Должен ли я использовать ‘Bearer’? Также это был поддельный ключ API, но я все равно его удалю.

2. я верю, что вы это делаете, или так говорят документы. Если это подделка, вы можете оставить ее, может быть полезно

3. Можете ли вы дать мне ссылку на то, где так написано в документе?

4. Также я, похоже, получаю напоминания для людей, которых нет в моем списке контактов, хотя я заменил XXXXX своим собственным ключом API

5. Кажется, я получаю статическую страницу — я понятия не имею, кто этот парень «Дэнни», но он появляется в моих напоминаниях, а также в ваших…

Ответ №2:

Вы можете видеть в ссылке на документ api, ключевое слово для аутентификации заголовка — «Bearer»: https://www.monicahq.com/api#authentication Поскольку Моника использует Laravel, это также описано на этой странице: https://laravel.com/docs/7.x/passport#passing-the-access-token