Esta pesquisa deve fornecer um conteúdo atualizado sobre o tema acima. Não esqueça de incluir as  
referëncias (fontes) no último item, reforçando que não deve ser um Copy/Paste e sim uma síntese 
das pesquisas que fizer.


Conceito

Antes de tudo, deve-se ter em mente que uma interface lógica é uma "interface" que permite que haja uma comunicação entre dois sistemas. Uma API é um recurso de um sistema que permite que esse se comunique com outro sistema. É possível citar vários exemplos de api's, visto que atualmente a grande maioria dos sistemas "conversam" com outros sistemas. Por exemplo, quando um aplicativo permite que o usuário se autentique nele através do facebook, isso ocorre graças à uma api que permite que o aplicativo solicite as informações necessárias para o sistema do facebook e o facebook as envia, possibilitando o usuário autenticar-se no sistema sem necessariamente se cadastrar nele em si. Outro bom exemplo é quando o usuário está em um site de turismo ou em alguma outra aplicação que disponibiliza mapas. Esses mapas, quase sempre, são fornecidos pelo Google Maps, através de um api entre os sistemas.

Concluindo, API's são padrões feitos pelos programadores dos respectivos softwares para que outros softwares possam utilizar alguns serviços, sem precisar implantar tal funcionalidade no próprio software. É como se um software pedisse uma aplicação "emprestada" para outro software.

Funcionamento

O funcionamento de uma api web é basicamente um conjunto de requisições e respostas HTTP, que geralmente estão no formato XML ou JSON. O modelo de arquitetura mais adotado hoje é o chamado REST(Representational State Transfer).

Protocolos

Protocolo é uma convenção que possibilita e governa a comunicação entre dois sistemas. Ele pode ser implementado por hardware, software ou pelos dois.

Alguns Exemplos de protocolos são TCP/IP, DHCP, TCP, entre outros. Porém, o protocolo mais importante quando se fala em API web é o protocolo HTTP(Hypertext Transfer Protocol), pois esse é o fator mais importante para a comunicação de dados na World Wide Web(WWW).

Vantagens

As API's levam vantagem quando comparadas a outros tipos de comunicação. Por exemplo, quando comparada à web services, pode-se até mesmo considerar que todo web service é uma api, porém não é toda api que é um web service. Primeiro pois web services servem apenas para comunicação web, enquanto os api's podem ser utilizados para comunicação local e até mesmo apenas dentro de um sistema operacional. E também as web services usam apenas 3 meios de comunicação: SOAP, REST e XML-RPC, enquanto as api's podem utilizar qualquer meio.

XML e JSON

XML(ou extensible markup language) e JSON são formatos para representar dados em uma web api, onde XML é um formato mais trabalhoso e bem estruturado e, por isso, leva vantagem em cima do JSON quando se trata de transportar grande carga. Porém, se a carga for pequena, o JSON se torna mais eficaz por ser um formato mais simples e menos. Exemplo de "código" em XML:


<?xml version="1.0" encoding="ISO-8859-1"?> <receita nome="pão" tempo_de_preparo="5 minutos" tempo_de_cozimento="1 hora">

 <titulo>Pão simples</titulo>
 <ingredientes>
   <ingrediente quantidade="3" unidade="xícaras">Farinha</ingrediente>
   <ingrediente quantidade="7" unidade="gramas">Fermento</ingrediente>
   <ingrediente quantidade="1.5" unidade="xícaras" estado="morna">Água</ingrediente>
   <ingrediente quantidade="1" unidade="colheres de chá">Sal</ingrediente>
 </ingredientes>
 <instrucoes>
   <passo>Misture todos os ingredientes, e dissolva bem.</passo>
   <passo>Cubra com um pano e deixe por uma hora em um local morno.</passo>
   <passo>Misture novamente, coloque numa bandeja e asse num forno.</passo>
 </instrucoes>

</receita>

Exemplo de "código" em JSON:

{ "Alunos" : [

       { "nome": "João", "notas": [ 8, 9, 7 ]  },
       { "nome": "Maria", "notas": [ 8, 10, 7 ] },
       { "nome": "Pedro", "notas": [ 10, 10, 9 ] } 
   ]

}

Exemplos de código

Modelo de código para logar no app com o facebook(em PHP):

<?php session_start(); if($_SERVER['REQUEST_METHOD'] == 'GET' && isset($_GET['code'])){

 // Informe o seu App ID abaixo
 $appId = '29048572934875';

 // Digite o App Secret do seu aplicativo abaixo:
 $appSecret = '123456789';

 // Url informada no campo "Site URL"
 $redirectUri = urlencode('http://fb.matheusafonso.com/');

 // Obtém o código da query string
 $code = $_GET['code'];

 // Monta a url para obter o token de acesso e assim obter os dados do usuário
 $token_url = "https://graph.facebook.com/oauth/access_token?"
 . "client_id=" . $appId . "&redirect_uri=" . $redirectUri
 . "&client_secret=" . $appSecret . "&code=" . $code;

 //pega os dados
 $response = @file_get_contents($token_url);
 if($response){
   $params = null;
   parse_str($response, $params);
   if(isset($params['access_token']) && $params['access_token']){
     $graph_url = "https://graph.facebook.com/me?access_token="
     . $params['access_token'];
     $user = json_decode(file_get_contents($graph_url));

   // nesse IF verificamos se veio os dados corretamente
     if(isset($user->email) && $user->email){

   /*
   *Apartir daqui, você já tem acesso aos dados usuario, podendo armazená-los
   *em sessão, cookie ou já pode inserir em seu banco de dados para efetuar
   *autenticação.
   *No meu caso, solicitei todos os dados abaixo e guardei em sessões.
   */

       $_SESSION['email'] = $user->email;
       $_SESSION['nome'] = $user->name;
       $_SESSION['localizacao'] = $user->location->name;
       $_SESSION['uid_facebook'] = $user->id;
       $_SESSION['user_facebook'] = $user->username;
       $_SESSION['link_facebook'] = $user->link;
     }
   }else{
     echo "Erro de conexão com Facebook";
     exit(0);
   }

 }else{
   echo "Erro de conexão com Facebook";
   exit(0);
 }

}else if($_SERVER['REQUEST_METHOD'] == 'GET' && isset($_GET['error'])){

 echo 'Permissão não concedida';

} ?>

Referências bibliográficas

http://canaltech.com.br/o-que-e/software/o-que-e-api/

http://www.tecmundo.com.br/programacao/1807-o-que-e-api-.htm

https://pt.wikipedia.org/wiki/Interface_de_programa%C3%A7%C3%A3o_de_aplica%C3%A7%C3%B5es

http://www.devmedia.com.br/application-programming-interface-desenvolvendo-apis-de-software/30548

https://en.wikipedia.org/wiki/Application_programming_interface

https://pt.wikipedia.org/wiki/Protocolo_(ci%C3%AAncia_da_computa%C3%A7%C3%A3o)

https://pt.wikipedia.org/wiki/World_Wide_Web

https://pt.wikipedia.org/wiki/Hypertext_Transfer_Protocol

http://sensedia.com/blog/apis/o-que-sao-apis-parte-2-como-uma-api-funciona/

https://fxcosta.wordpress.com/2015/05/31/diferenca-entre-api-e-web-service-de-maneira-simples/

http://phpsp.org.br/web-apis-xml-ou-json/

https://pt.wikipedia.org/wiki/XML

https://pt.wikipedia.org/wiki/JSON