Django Rest Framework: Versionamento
No Django Rest, existem algumas formas de versionar uma API. Veja algumas dessas formas neste artigo e aprofunde, ainda mais, seus conhecimentos neste incrível framework.
Antes de tudo, o que é Versionamento?
Para responder essa pergunta, pense na seguinte situação: uma equipe desenvolveu uma API que é consumida por diferentes sistemas e aplicações (clientes). Porém, é necessário implementar uma alteração ou incluir uma nova funcionalidade para parte desses sistemas.
Outras aplicações e sistemas que consomem a API, não precisam de tal alteração ou nova funcionalidade. Sabendo disso, o que fazer?
A resposta é Versionar a API.
Os clientes existentes podem usar a versão antiga da API sem alteração ou novas funcionalidades, e outros clientes, podem usar a nova versão da API com as novas atualizações.
Versionamento no Django Rest Framework
No Django Rest, existem algumas formas de versionar uma API. Vejamos a seguir alguns exemplos:
QueryParameterVersioning
Transfere a versão através do parâmetro version
Exemplo:
http://exemplo.com/alunos/?version=1
http://exemplo.com/alunos/?version=2
HostNameVersioning
A versão é definida pelo nome de domínio
Exemplo:
http://v1.exemplo.com/alunos/
http://v2.exemplo.com/alunos/
NamespaceVersioning
A versão é fornecida através do namespace da url
Exemplo:
urlpatterns = [
url(r'^v1/alunos/', include(alunos.urls', namespace='v1')),
url(r'^v2/alunos/', include(alunos.urls', namespace='v2'))
]
URLPathVersioning
Adiciona a versão no endereço do recurso de uma variável (o caminho é verificado através do parâmetro VERSION_PARAM)
Exemplo:
urlpatterns = [
url(r'^(?P<version>(v1|v2))/alunos/$', alunos_list
name='alunos-lista'
)
]
AcceptHeaderVersioning
Transferência do número da versão através do cabeçalho da requisição
Exemplo:
GET /alunos/ HTTP/1.1
Host: exemplo.com
Accept: application/json; version=1.0
Não podemos esquecer de incluir o tipo de versionamento na variável de ambiente do REST_FRAMEWORK
no arquivo settings.py
. Por exemplo:
REST_FRAMEWORK = {
'DEFAULT_VERSIONING_CLASS': 'rest_framework.versioning.QueryParameterVersioning',
}
Conclusão
Versionar uma API garante que ela seja atualizada com novas funcionalidades ou alterações para alguns clientes, sem comprometer aqueles que já a utilizam.
Quer aprender mais sobre Python, Veja: