question-mark
Stuck on an issue?

Lightrun Answers was designed to reduce the constant googling that comes with debugging 3rd party libraries. It collects links to all the places you might be looking at while hunting down a tough bug.

And, if you’re still stuck at the end, we’re happy to hop on a call to see how we can help out.

Versionamento dos endpoints

See original GitHub issue

Isso é uma questão extremamente importante… como lidar com a evolução da interface pública e as breaking changes?

Num módulo gerenciado pelo NPM isso é super fácil, a gestão pelo lado de quem consome isso já vem de graça por conta de como o NPM lida com semantic versioning… agora, como fazer numa rota pública que inclusive não pode ter versionamento gerenciado por uma conta/perfil como é feito em casos como Pagar.me e Stripe, dado que não teremos esse conceito de conta?

Issue Analytics

  • State:closed
  • Created 4 years ago
  • Comments:13 (9 by maintainers)

github_iconTop GitHub Comments

8reactions
kevenleonecommented, Feb 10, 2020

Opa @filipedeschamps , eu acho sim legal a estratégia do semantic version, porém na minha visão de usuário fica difícil memorizar qual versão específica que ele usou e deu certo, e qual que ele deveria utilizar, porque ai teríamos seguindo sua ideia:

1.0.0, 1.0.1, 1.0.2 e por ai em diante, a ideia de se utilizar v1, v2, v3 (ou até mesmo 1, 2, 3, porém pode parecer fora de contexto usar números soltos) seria para utilizar uma versão consolidada (sempre a mais recente) de uma versão específica.

O nosso querido GitHub também possui suas apis V3, V4, sei que não da pra se utilizar bem como base, porque as APIS possuem arquiteturas diferentes, a V3 para Rest e V4 para GraphQL (n sei se tem Rest também). Porém até onde vi não utilizam esse versionamento na URL, mas é devolvido um Header com essa informação da versão que ele está usando, que poderia ser útil para aprimorar nossa ideia aqui

image

E ao final, poderíamos ter uma lib genérica brasilapi como a AWS faz com seus endpoints, por exemplo. O que acha?

Isso aqui eu acho sensacional, facilitaria muito para centralizar essas interfaces.

Então só pra finalizar, sobre o semantic versioning eu acho bom, porém acredito que em um certo momento pode ser mais difícil controlar e manter do que apenas uma versão consolidada (v1,v2…)

É isso, muito bom trocar ideia sobre isso com você, seria bom também sugestões de outras pessoas para melhorar aqui a discussão ! 🚀

6reactions
kevenleonecommented, Feb 10, 2020

Hey @filipedeschamps ,

Sobre o versionamento poderia ser criado um novo parâmetro na API do cep-promise com options para informar qual API ele quer acessar (por default sempre a mais recente), por exemplo:

import getCEP from 'cep-promise';
const cep = 12345678
const options = {
  version: 'v1'
};

getCEP(cep, options)

E na interface do BrasilAPI aceitar um Header com a versão que quer acessar, assim:

Header  {
  version: 'v1'
};

Ou, na interface também poderia versionar por meio de rotas, atualmente se usa:

{{URL}}/api/cep/12345678

e poderia ser {{URL}}/api/v1/cep/12345678.

Acredito que ajustes precisariam ser feitos na estrutura do cep-promise para suportar um versionamento funcional, para não descartar a forma que era feita anteriormente.

Deu pra compreender a ideia??

Read more comments on GitHub >

github_iconTop Results From Across the Web

As melhores práticas para controle de versões em APIs REST
Quando fazer o Versionamento da sua API. · Se você tiver que remover um recurso da sua API que não está mais sendo...
Read more >
(Parte 4) Versionando APIs RESTful | by Thiago Lima
Versionamento pela URL ... Quando versionamos pela URL temos três maneiras de fazer isso: subdomínio, path ou query string. ... Notem que logo...
Read more >
API Versioning Do's and Don'ts. It's never too ... - Bits and Pieces
Often when developing our APIs, we tend to ignore versioning because we're literally building the first-ever version of our service.
Read more >
Web Services RESTful: Versionamento | Guia Definitivo para
Uma boa API é versionada: Mudanças e novos recursos são implementados em novas versões da API em vez de alterar continuamente apenas uma...
Read more >
Versionamento - API - Senior X PLATFORM
Os endpoints da plataforma senior X suportam o versionamento de APIs. ... * Onde: seniorx.version=? identifica a versão da API que se deseja ......
Read more >

github_iconTop Related Medium Post

No results found

github_iconTop Related StackOverflow Question

No results found

github_iconTroubleshoot Live Code

Lightrun enables developers to add logs, metrics and snapshots to live code - no restarts or redeploys required.
Start Free

github_iconTop Related Reddit Thread

No results found

github_iconTop Related Hackernoon Post

No results found

github_iconTop Related Tweet

No results found

github_iconTop Related Dev.to Post

No results found

github_iconTop Related Hashnode Post

No results found