Aproveite o mês das
carreiras na Alura

Até 44% OFF

Falta pouco!

00

DIAS

00

HORAS

00

MIN

00

SEG

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 da Imersão de IA da Alura com Google Gemini. Participe de aulas gratuitas online com certificado. Domine as inovações mais recentes da IA.

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