Django Rest Framework: Versionamento

Django Rest Framework: Versionamento
guilherme-lima
guilherme-lima

Compartilhe

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.

Banner promocional da Alura, com um design futurista em tons de azul, apresentando dois blocos de texto, no qual o bloco esquerdo tem os dizeres:

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:

Veja outros artigos sobre Programação