API: versionamento de schema
O curso trata do versionamento de uma API JSON no Rails. Começa mostrando por que a forma de uma resposta é uma promessa a clientes externos, como as integrações de parceiros. Depois compara o versionamento no caminho da URL, com rotas em namespace, ao versionamento pelo cabeçalho Accept, com um tipo MIME registrado e uma restrição de rota. Mostra quais mudanças quebram clientes e quais são seguras. Mostra como dividir partials do Jbuilder e módulos Ruby entre versões e como depreciar uma versão com os cabeçalhos Deprecation e Sunset.
O que você vai aprender
- ✓Por que uma mudança correta numa resposta JSON pode quebrar clientes externos
- ✓Versionamento pelo caminho da URL com namespaces aninhados do Rails e controllers por versão
- ✓Versionamento por cabeçalho com Mime::Type.register e um objeto de restrição de rota
- ✓Quais mudanças são aditivas e seguras, e quais remoções, renomeações ou restrições de entrada quebram clientes
- ✓Dividir partials e módulos Ruby entre versões, e depreciar uma versão com os cabeçalhos Deprecation e Sunset
Por que uma API precisa de uma versão
Uma página HTML interna pode mudar de forma de um dia para o outro. Todo visitante recebe a marcação nova na próxima requisição, porque nada fora do seu próprio deploy lê esse HTML como dados. Uma resposta JSON de API é diferente assim que um cliente de fora a interpreta. Mude a forma, e todo…
Ler a aula completa grátis →Currículo
7 aulasPor que uma API precisa de uma versão
Mostra como uma mudança correta, como passar totais para centavos inteiros, quebra clientes externos que seus testes não veem.
Versionamento por URL: a forma que a maioria das apps Rails busca primeiro
Coloca a versão no caminho com namespaces aninhados, com controllers separados por versão e URLs visíveis e fáceis de guardar em cache.
Versionamento por cabeçalho, e sua mecânica real no Rails
Envia uma URL estável para versões diferentes usando um media type de fornecedor registrado e uma restrição que lê o Accept.
O que realmente conta como uma mudança quebrada
Separa chaves acrescentadas, que são seguras, de remoções, renomeações, mudanças de sentido e validação mais rígida da entrada.
Versionando a forma da resposta sem duplicar a aplicação
Divide campos com json.partial! e cálculos com módulos Ruby, mantendo a forma da resposta de cada versão na própria view.
Depreciando uma versão sem puxar o tapete de quem a usa
Marca uma versão antiga com os cabeçalhos Deprecation e Sunset, que segue funcionando até uma pessoa decidir desligá-la.
Juntando tudo: duas formas, uma transição honesta
Revisa as seis aulas e propõe um desafio em Ruby que renderiza um dado canônico na forma da versão pedida.