O que é API

Compartilhe!

O que é API

Interfaces de Programação

API (Application Programming Interface, ou Interface de Programação de Aplicações) é um termo muito comum no dia a dia de um profissional de análise de sistemas.

Nos tempos atuais raramente se vê sistemas que trabalham “sozinhos” como víamos muito na época na computação centralizada (Mainframe), mas até mesmo nos OS/390 por aí existe muito programa Assembly, Cobol etc. que são repositórios de funções que acabam fazendo o papel de API’s.

Mesmo sendo um conceito muito comum no dia a dia do analista de sistemas, vez ou outra é empregado de maneira não muito adequada; em alguns casos uns restringem muito o conceito de API, em outros, abrangem demais.

Em função de um desalinhamento sobre o conceito e para compor a base de posts conceituais deste blog, resolvi escrever este breve post.
O que é API - eBook sobre Requisitos de Software

O que é API e o que não é API

Uma API tem por objetivo principal disponibilizar recursos de uma aplicação para serem usados por outra aplicação, abstraindo os detalhes da implementação e muitas vezes restringindo o acesso a estes recursos com regras específicas para tal.

Caso trate-se de algo que encapsule parte da implementação de uma aplicação e disponibilize a implementação para outra aplicação utilizar, é uma API.

Se estamos falando de abstrações/código encapsulado dentro de uma mesma aplicação e com interfaces específicas para uso, não é API, pode ser biblioteca, framework ou algo do tipo.

Basicamente, se trata-se de recurso “oferecido” dentro da fronteira da aplicação então não é API, se é recurso oferecido fora da fronteira da aplicação e é possível outra aplicação acessá-lo via programação, então é API.

Reuso, Centralização e Integração

Uma API tem três principais objetivos: 1) possibilitar reuso de lógicas, uma vez que expondo uma função ou método por exemplo, o código do respectivo não precisa ser duplicado no contexto da solução, 2) centralizar lógica (premissa para coesão) viabilizando num ponto único de uma solução o acesso a tal lógica, 3) viabilizar integração com outras aplicações quando a integração é mais “baixo nível”, demandando acesso a recursos internos da aplicação.

Tipos de API 

Conceitualmente uma API é uma coisa só, como vimos. Mas em termos de desenvolvimento de software uma API pode ser construída de várias formas. As mais utilizadas são:

DLL – Dynamic-link library: são executáveis resultantes de classes ou conjuntos de classes compiladas em ambientes como .Net e Delphi, por exemplo. Incorporado numa DLL, conforme as regras de visibilidade aplicadas, são expostos vários métodos/funções que podem ser utilizadas por terceiros.

Plugins: atualmente é um dos modos mais utilizados em função da maturidade da web 2.0. Em aplicações web mais simples, atualmente, eu me arrisco a afirmar que 50 por cento do código é da própria aplicação, o restante é consumido de plugins diversos. Quando falamos de um blog WordPress por exemplo (como é este que uso) a maioria dos recursos são resultado de consumo de plugins (exemplos são uso de captcha, envio de e-mail e feed, anti-spam, otimizador de SEO, analisador de estatísticas etc.).

Frameworks: quando temos um framework exclusivo de um sistema não trata-se de API, pois não há exposição de recursos nem integração com outros sistemas. Quando há, geralmente trata-se de um framework que prove um conjunto de API’s para consumo. No mundo web grandes exemplos de frameworks que “fazem mágica” para seus usuários são JQuery e Bootstrap.

WebAPI: basicamente são API’s utilizadas em soluções web (algo dentro da www). WebAPI’s podem ser client-side ou server-side (executadas no front ou no back-end de uma aplicação web). Eu não gosto desta definição, pois a web é um pedaço pequeno da internet, que tem muito mais que a parte gráfica como vemos; talvez Internet API seria melhor…

… mas é WebAPI. Neste contexto falamos de Serviços Web (sejam WebServices SOAP, WCF com SOAP, Rest, JSON, TCP etc., WebAPI de .Net e semelhantes). Quando fala-se de SOA – Arquitetura Orientada a Serviços – na prática é um conjunto de WebAPI’s organizadas de forma específica e disponíveis para um eco-sistema utilizá-las.

Não existem apenas os tipos citados, existem vários outros mas penso que os citados são os mais utilizados atualmente. É isso, eu adoro API’s pois lidar com integração em nível de programação é um trabalho super interessante.

Dica de uso

Existem boas práticas quando lidamos com API’s, mas uma específica talvez seja a principal: cuidado ao publicar uma API, pois se parte de sua lógica estiver exposta do jeito errado, consertar isso após a publicação será desastroso. Neste post – WebService – Cuidado ao publicar um WebMethod – falo um pouco sobre isso, no contexto de um WebService.

Abraços!

API

  • Pingback: Façade – Padrão de Projeto | Até o Momento()

  • Pingback: WebService – Cuidado ao publicar um WebMethod | Até o Momento – Muito conteúdo de qualidade sobre Engenharia de Software()

  • Pingback: O que é um Requisito Não-Funcional - Até o Momento()

  • Jéssica Nathany

    adorei o post, bem explicado e didático

    • Plínio Ventura

      Oi Jéssica! Que bom que o conteúdo lhe foi útil, grande abraço!

  • Danilo Braz

    Plínio, existe alguma diferença entre API e WebService? Vejo com frequência pessoas se referindo a um mesmo “serviço” usando API e em seguida Webservice, isso sempre me causou confusão.

    • Plínio Ventura

      Olá Danilo!

      Há muita diferença. API é um conceito, não um software, uma tecnologia, protocolo de comunicação, ou algo do tipo.

      Webservice é um padrão de integração entre sistemas, que utiliza protocolo http como meio de transporte das informações. Um dos principais motivadores da criação do conceito de serviços web, ou webservices, foi permitir a integração entre sistemas desenvolvidos em linguagens/tecnologias diferentes sem que houvesse dependência com a liguagem/tecnologia usada.

      Pelas possibilidades maduras de um webservice em termos de segurança, robustez, interoperabilidade etc. um webservice é o padrão mais adotado para APIs em contexto de integração entre sistemas. Mas uma API pode não ser um webserivce, e um webservice pode não ser uma API.

      Um webservice pode usar como recurso para “empacotamento” dos dados trafegados SOAP, Json etc. Mas uma API pode ser, por exemplo, uma DLL com vários métodos expostos para alguém usar para integrar software com um hardware, por exemplo. Ou até mesmo DLLs de um sistema operacional como o Windows, com métodos/funções expostas para um programador usar recursos nativos do sistema operacional.

      Ficou alguma dúvida adicional?

      Abraço!

  • Leonardo Maffei

    Olá. Gostei do post, bastante, mas ainda tenho dificuldade em diferenciar uma bibblioteca de um framework. Poderia por favor explicar de outra forma? Ou atrvés de exemplos.. Não consigo ver algo e dizer se é uma biblioteca ou framework :/