Essa é realmente uma pergunta muito ampla. No sentido mais básico, uma API da web funciona quando um cliente (como um navegador da Web) faz uma solicitação HTTP de algum tipo para um servidor da Web. O servidor examina essa solicitação para descobrir o que o usuário deseja e, em seguida, retorna os dados em algum formato (como uma página) que o cliente examina para obter o que deseja. Essas são apenas as únicas coisas que as APIs da Web têm em comum; Percebo que isso realmente não responde à sua pergunta, mas eu queria explicar por que a pergunta é tão ampla.
Existem várias maneiras pelas quais um cliente pode formatar sua solicitação ou um servidor pode formatar sua resposta. Portanto, para que qualquer uma delas faça sentido, o cliente e o servidor precisam concordar com algumas regras básicas. De um modo geral, hoje em dia existem dois estilos muito gerais que são usados para esse tipo de coisa.
Chamada de procedimento remoto (RPC)
Em uma API de estilo RPC, geralmente há apenas um URL para toda a API. Você o chama postando um documento de algum tipo que contém informações sobre o que você deseja fazer e o servidor retorna o documento que possui o que você deseja. Em termos gerais de computação, o documento de solicitação normalmente possui um nome de função e alguns argumentos.
Alguns padrões para esse estilo de API incluem XML-RPC e SOAP. Esses padrões tentam criar um formato que possa ser usado para descrever as chamadas de função que você está fazendo ou mesmo para descrever toda a API.
Transferência de estado representacional (REST)
Em uma API de estilo REST, você não tem um URL para a API como um espaço de nome : um servidor ou uma pasta dentro de um servidor, onde muitos objetos diferentes residem, e cada URL desse espaço de nome se torna parte da API. Ao invés de dizer ao servidor que deseja usar a API, o URL diz ao servidor que você quer usar a API em . Em seguida, você usa o método HTTP e, possivelmente, o corpo da solicitação, para explicar o que deseja fazer com esse objeto: GET (recuperar algo que já existe), POST (criar algo novo), PUT (substituir algo que já existe) ou DELETE (livre-se de algo que já está lá). Existem alguns outros verbos que você pode usar, mas esses são de longe os mais comuns.
Até agora, não mencionei formatos padrão para o REST. Em teoria, você poderia usar praticamente qualquer formato. O HTTP já fornece o que você deseja fazer e o que deseja, para que o formato do corpo da solicitação possa ser qualquer coisa: alguma representação do objeto que você deseja criar ou substituir. Mas, na prática, os autores do REST tendem a concordar com um formato de qualquer maneira, porque seria difícil entender todos os formatos possíveis.