Saltar a contenido

base_api

app.common.http.base_api

Módulo de Python para consumir url's extenas, utilizando urllib3. No modifiques esta clase directamente, revisa los módulos:

  • app.common.http.graphql
  • app.common.http.rest
  • app.common.http.xml

para realizar implementaciones personalizadas.

Para más información, te recomendamos leer la documentación del Proyecto.

BaseApiClient

Genera una instancia base de urllib3.request para hacer peticiones a url's externas. Este objeto maneja todos los detalles de la configuración de urllib3 para realizarlas de forma sencilla.

Attributes:

Name Type Description
base_uri str

Fija la url base para el consumo de peticiones.

_default_headers dict[str, Any]

un diccionario con la información de las cabeceras

_json_resp Any

un objeto para almacenar respuestas en formato json

time_out int

el tiempo de espera de la conexión, por defecto 60 segundos

retries int

el número de reintentos permitidos, por defecto 3

req Optional[BaseHTTPResponse]

una instancia de urllib3.request, para implementaciones personalizadas

Notes

esta clase no se utiliza directamente, revise los módulos:

  • app.common.http.graphql
  • app.common.http.rest
  • app.common.http.xml

__init__(base_uri=None)

Constructor de la clase BaseApiClient

Parameters:

Name Type Description Default
base_uri str

la url base, por defecto None

None

set_headers(custom_headers=None)

Establece 'Content-Type: application/json' como cabecera por defecto y permite añadir otro diccionario con cabeceras, sí el parámetro custom_headers, es enviado.

Parameters:

Name Type Description Default
custom_headers dict[str, Any]

permite añadir otro diccionario con cabeceras, por defecto None.

None

Returns:

Type Description
Optional[dict[str, Any]]

un diccionario con las nuevas cabeceras ó None en caso de error

Examples:

...
req_header: dict[str, Any] = self.set_headers(custom_headers)

get_json_data()

Devuelve la respuesta/error generada por urllib3 en formato JSON, utilizando el método json de BaseHTTPResponse.

Returns:

Type Description
Optional[dict[str, Any]]

Un diccionario con el mensaje de la respuesta ó None en caso de error

Examples:

...
response: dict[str, Any] = self.get_json_data()

basic_auth(username, passwd)

Crea una cabecera de autorización Basic. Como el ID de usuario y la contraseña se transmiten a través de la red como texto sin cifrar (está codificado en base64, pero base64 es una codificación reversible), el esquema de autenticación básica no es seguro. Se debe utilizar HTTPS/TLS con la autenticación básica. Sin estas mejoras de seguridad adicionales, la autenticación básica no debe utilizarse para proteger información sensible o valiosa.

Parameters:

Name Type Description Default
username str

el nombre del usuario

required
passwd str

la contraseña

required
Notes
  • Puede generar inconvenientes si se usa otra cabecera 'Authorization' en la solicitud. ejemplo: 'Authorization: Bearer XXXX'

Returns:

Type Description
Optional[dict[str, Any]]

un diccionario con las nuevas cabeceras ó None en caso de error

Examples:

...
basic_auth_token: dict[str, Any] = self.basic_auth("awesome_user", "awesome_p4sW0rd")