Smart Rest Client¶
Smart API Client é um Wrapper para realizar solicitações para Rest APIs usandoobjetos para solicitar endpoints e seus métodos
Configurações Basicas¶
Crie um arquivo clients.py em alguma pasta nucleo do seu projeto, caso não tenha, crie dentro da sua pasta do projeto para ficar mais simples de ser importado de qualquer lugar do projeto com o seguinte conteúdo:
from smart_rest_client.client import api_client_factory
from smart_rest_client.settings import APIClientSettings
API_CLIENT_SETTINGS = {
'API': [
{
'NAME': 'production',
'BASE_URL': 'https://example.com',
'ENDPOINTS': [
'/v1/order/orders',
'/v1/user/users',
...
],
'AUTHENTICATION_ACCESS_TOKEN': 'TOKEN'
},
{
'NAME': 'localhost',
'BASE_URL': 'http://localhost:8001',
'ENDPOINTS': [
'/v1/order/orders',
'/v1/user/users',
...
],
'AUTHENTICATION_ACCESS_TOKEN': 'TOKEN'
}
]
}
api_settings = APIClientSettings(API_CLIENT_SETTINGS)
local_api_client = api_client_factory('localhost', api_settings)
production_api_client = api_client_factory('production', api_settings)
Nota
O nome dessa variável será o nome do cliente que será importado para cada projeto
É recomendável que o nome venha de uma constante no arquivo settings.py, e se possível ser até uma variável de ambiente
No nosso caso, temos a opção de “produção”e “localhost”, oa fábrica gera o cliente de acordo com o nome utilizado e oparâmetros identificados nele
Vamos imaginar que o cliente esta em uma pasta dentro da pasta do projeto (pasta que contém o arquivo settings.py)
Exemplo¶
Importe o api_client do seu arquivo client.py
>> from client import production_api_client as api_client
>> result = api_client.user.users.list()
>>
>> # Use the result as object
>> print(result.as_obj())
UserUsers(
previous=None,
count=1,
next=None,
results=[
NamelessModel(occupation=None, full_name='Admin System',
image=None, cpf='', is_superuser=True, cellphone='', email='', sex=None, username='admin', birthdate='09/09/1999',
logged_as='', id=1, is_temp=False, is_active=True)
]
)
>>
>> # Use the result as dict
>> print(result.as_dict())
{'count': 1,
'next': None,
'previous': None,
'results': [{'id': 1,
'username': 'admin',
'full_name': 'Admin System',
'sex': None,
'birthdate': '09/09/1999',
'cpf': '',
'cellphone': '',
'email': '',
'image': None,
'occupation': None,
'logged_as': '',
'is_superuser': True,
'is_active': True,
'is_temp': False}
]
}