Django как передать базовые c заголовки авторизации в запросах? - PullRequest
1 голос
/ 09 февраля 2020

Я полностью новичок в Django (из фона Node / Express). Мне нужно позвонить в API, который использует базовую c авторизацию.

Чтобы делать запросы, я использую модуль запросов, но я не знаю, где передавать аутентификационные заголовки. В Ax ios я обычно устанавливаю заголовки по умолчанию следующим образом:

import axios from 'axios'
const token = `Basic ${Buffer.from(`${process.env.API_USERNAME}:${process.env.API_PASSWORD}`).toString('base64')}`;
axios.defaults.baseURL = process.env.API_URL;
axios.defaults.headers.common['Authorization'] = token;

Мой сервис в Django:

from base64 import b64encode
import requests
import environ
environ.Env.read_env()

endpoint = 'some url'
credentials = f"{env('API_USERNAME')}:{env('API_PASSWORD')}"
encodedCredentials = str(b64encode(credentials.encode("utf-8")), "utf-8")
auth = f'"Authorization": "Basic {encodedCredentials}"'

def get_api_data():
    return requests.get(endpoint).json()

Как мне передать заголовки?

1 Ответ

0 голосов
/ 09 февраля 2020

Если API использует аутентификацию токена, вы можете использовать headers аргумент для передачи токена с заголовком запроса:

return requests.get(endpoint, headers={"Authorization": f"Basic {encodedCredentials}"}).json()

Или вы можете передать логин и пароль напрямую с помощью auth аргумент:

return requests.get(endpoint, auth=("login", "password")).json()
...