Um site deve usar sua própria API pública?

31

Estou começando a escrever um serviço da web e construí com nodeJS e uma abordagem RESTfulish.

Pelo que eu entendo:

  • A vantagem é que você não precisa duplicar o código.
  • As desvantagens são que você:
    • atualizará a API pública com frequência, mas deve ser resolvida com o controle de versão
    • não pode realmente fazer cache e otimizações específicas de serviço

O que é considerado uma boa prática? Sites como Stack Exchange, Github, Twitter etc. usam suas próprias APIs para seus clientes?


fonte
12
Comer sua própria ração também irá levá-lo para melhorar a sua API pública
Ben Brocka
É assim que a Amazon faz.
OliverS
2
Para adicionar ao ponto de OlverS, consulte Google Platforms Rant
Brian

Respostas:

37

Você deve absolutamente usar sua própria API. Esse conceito é amplamente conhecido como dogfooding e tem muitos benefícios além de evitar a duplicação de código.

  • Comportamento consistente entre seu site / produto e o que os consumidores da API escreverão (por exemplo, as expectativas da API)
  • Outra forma de teste.
  • Você pode e encontrará bugs na API antes de seus clientes, fazendo com que suas resoluções custe menos.

Embora eu argumentasse contra um de seus pontos: você não deve atualizar a API com frequência. Gaste tempo para arquitetar e revisar uma API que permanecerá por um tempo. Felizmente, a alimentação de cães dessa maneira reforçará isso. Onde você quebraria o código do cliente antes, agora estará quebrando o seu próprio código. Quando necessário , o controle de versão sim é uma solução, mas deve ser evitado.

Steven Evers
fonte
0

por alguma razão, não me permitirá logar como o pôster da pergunta, mas fui eu. Não posso aceitar sua resposta, gostaria de poder, faz muito sentido.

No entanto, como você não deseja atualizar sua API? Que tal adicionar novos recursos, remover os impopulares, refatorar etc.?

stanm87
fonte
Ei. Este deve ser um comentário sobre a resposta dele - mas acho que você não tem representante suficiente para comentar. De qualquer forma, o ponto é que você não deve atualizar a API com frequência . E mesmo assim, adicionar novos recursos não é problema - ele não pode quebrar o código existente. Por que remover os impopulares? Torne-os obsoletos e remova-os em algum momento no futuro, depois que as pessoas tiverem muito tempo para responder à depreciação.
Max
2
A adição de métodos a uma API é boa, alterar uma API existente é ruim porque interromperá qualquer código que dependa da API.
Bryan Oakley
@ stanm87: Max e Bryan disseram bem. Você deve evitar alterar o contrato da sua API (ou seja, a interface e o comportamento esperado, funcional). As pessoas dependerão disso, se usarem sua API e se você a alterar, ela quebrará o código.
Steven Evers
muito obrigado por esclarecer. @Max Eu realmente não posso comentar sua resposta #
stanm87