O que há neste pacote?
Este pacote tem ferramentas para extender as funcionalidades de API's rest escritas em Django e Django Rest Framework.
Middlewares
Envelope
Este middleware dá a capacidade de incluir um envelope na respostas da API:
Ex:
Requisição: https://[.....]/?envelope=true
Resposta:
{
"code": 200,
"message": "OK",
"data": {
"id": "11e87365528a11659bdd005056a83b77",
"numero_loja": 2,
"endereco": "RUA OTAVIO ROCHA, 152",
"cidade": "PORTO ALEGRE",
"estado": "RS",
"cep": 90020150,
"telefone": "(51) 3901-6053"
}
}
Requisição: https://[.....]/?envelope=false
Resposta:
{
"id": "11e87365528a11659bdd005056a83b77",
"numero_loja": 2,
"endereco": "RUA OTAVIO ROCHA, 152",
"cidade": "PORTO ALEGRE",
"estado": "RS",
"cep": 90020150,
"telefone": "(51) 3901-6053"
}
Obs.: Por default, o recurso de envelope fica desabilitado (igual a envelope=false).
Log
Este middleware habilita uma personalização dos logs para envio para o Graylog, ferramenta de registro de logs.
Segue um exemplo de configuração:
LOGGING = {
'version': 1,
'filters': {
'require_debug_true': {
'()': 'django.utils.log.RequireDebugTrue',
},
'settings_filter': {
'()': 'apicredito.core.logfilter.SettingsFilter',
}
},
'handlers': {
'console': {
'level': 'DEBUG',
'filters': ['require_debug_true'],
'class': 'logging.StreamHandler',
},
'graypy': {
'level': 'INFO',
'class': 'graypy.GELFHandler', # configurações do Graylog
'host': '192.168.0.45',
'port': 12201,
'level_names': True,
'extra_fields': True
}
},
'loggers': {
'apilog': {
'level': 'INFO',
'handlers': ['graypy'],
'filters': ['settings_filter']
}
}
}
Para habilitar os middlewares, coloque na seção MIDDLEWARE do settings.py da sua API Django:
MIDDLEWARE = [
[...]
'lins_restapi.http.EnvelopeMiddleware',
'lins_restapi.http.LoggingMiddleware',
]
Paginação
Este pacote estende a biblioteca de paginação do Django, padronizando e integrando com os demais middlewares do pacote. Ele adiciona headers nas respostas da API, contendo o total de registros, o número de registros retornados na página e qual a pagina atual. Se envelope=true, também retorna como um campo do envelope.
Conceitos:
- total ou X-Total: Total de registros da requisição;
- page ou X-Page: Página atual/requisitada;
- per_page ou X-Per-Page: Número de registros por página;
Ex.:
Requisição:
https://[...]?per_page=2&page=5&envelope=true
Resposta:
{
"code": 200,
"message": "OK",
"total": 43,
"page": 5,
"per_page": 2,
"data": [
{
"id": "11e87365528a5bff9bdd005056a83b77",
"numero_loja": 10,
"endereco": "RUA JULIO DE CASTILHOS, 2030",
"cidade": "CAXIAS DO SUL",
"estado": "RS",
"cep": 95010002,
"telefone": "(54) 3223-1685"
},
{
"id": "11e87365528a62609bdd005056a83b77",
"numero_loja": 11,
"endereco": "AV. NAÇÕES UNIDAS, 2001",
"cidade": "NOVO HAMBURGO",
"estado": "RS",
"cep": 93320020,
"telefone": "(51) 3594.5948"
}
]
}
Headers:
X-Page →5
X-Per-Page →2
X-Total →43
Obs.: Se houver cors, como o django-cors-headers, é necessário adicionar os headers de paginação como exceção:
CORS_EXPOSE_HEADERS = [
'X-Page',
'X-Per-Page',
'X-Total'
]
Outros recursos
- Sobrescrita de classes do Swagger Generator afim de tratar o protocolo https;
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
File details
Details for the file lins_restapi-2.1.0.tar.gz.
File metadata
- Download URL: lins_restapi-2.1.0.tar.gz
- Upload date:
- Size: 6.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/1.12.1 pkginfo/1.5.0.1 requests/2.21.0 setuptools/41.0.1 requests-toolbelt/0.9.1 tqdm/4.31.1 CPython/3.7.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
bde7cb612b40b9a77434bbca362366222a0ebeffaf84983799e62d20b19ccb27
|
|
| MD5 |
f11b60c41ce5433973b2f233f79d183e
|
|
| BLAKE2b-256 |
feb8282c38c97ff306458f9792c9d72ac4d65c9b74e02f97f9e3a1426cb38b49
|