Executando verificação de segurança...
2

Um detalhe importante (principalmente para iniciantes): API não é só WEB.

Sei que hoje em dia "API" acabou virando quase que um sinônimo de "URL que retorna um JSON", mas o termo é bem mais amplo que isso (e a ideia geral, inclusive, antecede a web). Também sei que o post acima está focando mais nesse tipo específico (API Web), e isso nem é uma crítica a ele, é só porque eu sou chato mesmo :-)

Mas acho que não custa nada aprofundar um pouco mais o tema.


API é a sigla para "Application Programming Interface" (algo como "Interface de Programação de Aplicações"), que é basicamente "algo" que permite que dois programas/softwares/sistemas/aplicativos "conversem" entre si (a grosso modo, eles trocam informações de forma programática). O detalhe é que esses programas não precisam estar na web.

Por exemplo, os sistemas operacionais costumam disponibilizar API's (uma série de funções) para que outros programas possam acessar seus recursos e serviços. Daí temos, só para citar dois exemplos, a Linux Kernel API e a Windows API. Ambos servem para que outros programas acessem recursos do sistema operacional (por exemplo, para criar uma janela com botões e texto, chame as funções do sistema em vez de você mesmo desenhar cada pixel na mão). As API's do iOS e Android são similares, pois permitem que aplicativos acessem recursos do celular (câmera, sensores de movimento, etc) de forma programática: o seu aplicativo vai ter algum código que acessa esses recursos, e isso é feito através da API (classes/funções) de cada sistema.

"Ah, mas meu app acessa a internet"

Sim, mas aí ele não está mais usando a API do sistema operacional. Uma coisa é ele usar esta API para colocar o botão na tela, outra é o código que acessa a internet depois que o botão é clicado.

Uma lib/biblioteca/pacote/módulo/crate/etc nada mais é que uma API que permite que seu programa tenha acesso à funções prontas que fazem algo que vc precisa. É um programa feito por alguém, que disponibiliza várias funções/classes/etc para que outros programas usem. E não necessariamente eles precisam acessar a internet. Sei que isso contrasta muito com a ideia atual de API Web, mas não fui eu quem criei a definição. De qualquer forma, isso mostra como o termo é mais amplo do que parece.

Até mesmo um compilador pode ter uma API. É o caso da LLVM C++ API, que é composta de várias funções que você pode usar para por exemplo construir seu próprio compilador. O Roslyn (plataforma que inclui, entre outros, o compilador do C#) também possui uma API que permite que você acesse cada etapa da compilação de forma programática. Com isso é possível criar ferramentas que analisam, refatoram e até mesmo geram código, usando a própria linguagem para isso (pois a API disponibiliza classes/métodos em C# mesmo). Nada de Web, REST, JSON, etc. Somente dois programas conversando (no caso, um programa que vc vai escrever, conversando com outro programa, que é o compilador).

Por fim, uma API Web (que é o que se tornou mais popular hoje em dia) segue a mesma ideia básica ("algo" que permite que dois programas conversem/troquem dados), a diferença é que sua forma de acesso é pela internet. Note que nem o formato JSON é obrigatório, ele apenas se popularizou nos últimos anos, mas vc poderia usar qualquer outro (<ufa>graças a deus o terrível SOAP tem sido cada vez menos usado</ufa>).

Carregando publicação patrocinada...
2

O Roslyn mudou o panorama dos compiladores, ele é um CaaS (Compiler as a Service) e é uma API que por acaso já vem junto um jeito de consumir pela linha de comando ou por um IDE como o Visual Studio, entre outros, e que você pode construir sua própria forma, além de personalizar como vai usar do jeito tradicional. Foi um game changer na área, e agora muitos compiladores estão seguindo este caminho.

Bons exemplos. API não é o serviço fornecido é o método de acesso disponível para acessar o que é fornecido.

Eu não brigo com quem fala que vai acessar uma API de Pokemon, porque de certa forma está certo, mas o correto é ela acessar um serviço de um repositório de informações sobre Pokemon, através de uma API.

Não existe "APIs grátis", existem serviços de fornecimento de informações ou ações que são grátis e você os acessa através de uma API.

ERRADO:

Web API

Não errado no sentido de não ser assim, é errado no sentido que não deve ser interpretado que tudo isso é a API, a API é só o meio de acesso. Pode acontecer exatamente a mesma coisa mostrada aí e não ser uma API. Uma página web é assim e não costuma ser uma API.

CERTO:

API

Não certo como única forma, mas como é a API na sua forma mais tradicional, nenhum problema ela usar REST ou outra forma web também, só é menos eficiente e talvez menos segura, mas tem suas vantagens também.

Cara, foi muito difícil achar imagem sobre o certo, quase tudo que tem na internet de forma fácil é mostrando o jeito errado. Fica quase impossível ensinar o certo e o errado passa ser "o certo". E faz as pessoas mais radicais gritarem alto pelo erro, igual acontece com os que planificam o formato do planeta, afinal ele não é redondoneta </sarcarm>

O problema das pessoas aprenderam o termo errado é que todas suas decisões seguintes serão baseadas nesse erro. E gente vê cada vez mais isso acontecendo. E cada vez mais é difícil as pessoas perceberem acontecendo, vai criando uma bolha que valida o erro. Não é só em política que isso acontece, serve para todas as áreas, tudo vira guerra religiosa que escanteia a ciência.

Aprenda o certo desde o dia 1. Uma frase que uso muito:

Se você treinar o erro é ele que fará pra sempre

Aproveitando para fazer jabá porque acho que contribui positivamente:

Qual é a diferença de API, biblioteca e framework?

e O que significa o termo "Consumir uma API"?

e ainda O que é ABI? Tem alguma relação com API?

1

Sua resposta é maravilhosa meu querido, mas infelizmente acho que para um iniciante de verdade, nao agregaria muito, porque abordaria também um âmbito que ele provavelmente ainda não viu, mas foi bom que colocou aqui, porque se a pessoa não for iniciante, sua resposta vai ser complementar!

3

Pois uma resposta assim é a que um iniciante realmente deveria ter! um iniciante em qualquer assunto deveria procurar o verdadeira significado macro das coisas e não apenas uma fração resumida e rasa de conhecimento. Comece procurando os "porquês" e não apenas a resposta, isso serve pra tudo. Eu mesmo estou estudando Haskell e muitas coisas não faziam sentido em tutoriais que vi pela internet, só quando fui aos "porques" consegui começar a entender pra que serve e porque foi criada a lang.

1

Bom, pra um iniciante, acho que pelo menos o primeiro parágrafo é importante ("API não é só WEB").

Isso deixa aquele "alerta" de que tem muito mais a aprender sobre o assunto. Mesmo que a pessoa não veja isso agora, saberá que no futuro poderá pesquisar mais a respeito, em vez de achar que não tem mais o que aprender :-)