Авторизация
Для авторизации выполняется POST-запрос, содержащий логин и пароль пользователя:
POST {host}/account/login
Content-Type: application/json
{
"username": "username",
"password": "password"
}
При авторизации открывается пользовательская сессия, а сервер возвращает JWT-token, который должен кодировать каждый дальнейший запрос. С помощью этого серверная часть системы определяет, от какого пользователя исходит запрос, есть ли у этого пользователя права на совершение этого запроса и в соответствии с этим формирует ответ.
При использовании приложений по типу Postman токен сохраняется в виде cookie и прикрепляется к каждому запросу до тех пор, пока пользовательская сессия не будет закрыта.
При использовании API через Python-библиотеку requests можно создать объект класса requests.Session()
, авторизоваться с помощью метода requests.Session.post()
и производить все дальнейшие запросы с помощью методов объекта сессии. В данном случае токен будет храниться внутри объекта сессии и также автоматически отправляться на сервер вместе с выполняемыми запросами.
import requests
import json
def login(username, password): # производит авторизацию и возвращает объект сессии
authUrl = f'{host}/account/login/'
login_data = {
"username": username,
"password": password
}
headers = {'Content-type': 'application/json'}
# создание объекта сессии
s = requests.Session()
# авторизация и получение JWT-токена
s.post(url=authUrl, data=json.dumps(login_data), headers=headers)
return s
host = 'https://evergis.ru/sp'
username = 'username'
password = 'password'
getUserInfoUrl = f'{host}/account/{username}'
# авторизация
session = login(username, password)
# запрос в рамках сессии
user_info = session.get(url=getUserInfoUrl).json()
print(user_info)