40+ Perguntas e Respostas de Entrevista sobre APIs REST em 2023

Uma API, abreviação de Interface de Programação de Aplicações, funciona como um elo de ligação que possibilita que diferentes softwares acessem funcionalidades de outras aplicações.

A utilização de uma API oferece a vantagem de possibilitar que aplicações externas acessem dados específicos de outra aplicação, sem permitir que visualizem todo o conjunto de dados. Assim, elas têm acesso apenas às informações disponibilizadas pela API.

O software ou utilizador que busca aceder aos dados é denominado cliente, enquanto o software que disponibiliza os dados é conhecido como servidor.

Atualmente, as APIs são amplamente utilizadas em todos os tipos de arquiteturas de software. Se você estiver buscando uma posição em desenvolvimento front-end, back-end, full-stack ou mesmo engenharia de redes, é muito provável que você se depare com diversas perguntas sobre APIs.

Dito isto, vamos aprofundar algumas das questões mais frequentes em entrevistas sobre APIs REST.

O que é REST?

Resposta: REST, que significa Transferência de Estado Representacional, é um modelo arquitetónico que impõe certas regras para a construção de APIs. As APIs que seguem os princípios REST são chamadas de APIs RESTful.

É importante ressaltar que REST não é um protocolo ou padrão. Em vez disso, é uma arquitetura que pode ser aplicada de várias maneiras para criar APIs.

A sua grande flexibilidade e liberdade proporcionada aos programadores são os motivos pelos quais é amplamente utilizada no desenvolvimento de APIs. Seguem alguns dos princípios de uma arquitetura REST:

  • Separação entre cliente e servidor: Em uma API RESTful, o cliente só pode afetar o servidor ao fazer requisições de dados através de um URI (Identificador Uniforme de Recursos). Da mesma forma, o servidor não deve modificar o conteúdo do cliente de nenhuma forma.
  • Ausência de estado: Requisições separadas não têm conhecimento umas das outras. Ou seja, as requisições são sem estado e não mantêm um estado. Quando uma requisição é atendida, ela simplesmente termina. Cada requisição é independente das outras.
  • Arquitetura em camadas: O cliente ou servidor não tem como saber se a requisição está sendo feita diretamente para a fonte ou para uma aplicação intermediária. O foco está apenas na resposta à requisição.
  • Cache: Os dados ou a resposta podem ser armazenados em cache tanto no cliente quanto no servidor para aumentar a performance e escalabilidade. Se um recurso é frequentemente requisitado, a sua resposta pode ser guardada em cache e reutilizada quando necessário.

Quais são as principais características do REST?

Resposta: As características ou recursos chave do REST são:

  • Flexibilidade: Você pode mudar de servidor sem que isso cause qualquer impacto, uma vez que a API fornecerá a mesma resposta para uma requisição específica. Além disso, é possível adicionar quantos endpoints forem necessários para diferentes tipos de dados.
  • Escalabilidade: O uso de cache melhora a escalabilidade, pois as respostas são salvas para uso futuro. Isso reduz a carga no servidor e também diminui a latência.
  • Autorização: Através do cabeçalho de autorização, é possível especificar as credenciais que o servidor utilizará para autorizar a requisição.
  • Ausência de Estado: Esta é a característica mais importante do REST, já que impede que as requisições tenham conhecimento sobre outras requisições. As requisições são isoladas e encerradas logo após serem atendidas.

O que são recursos em uma arquitetura REST?

Resposta: Recursos são as entidades sobre as quais diversas ações são realizadas, como buscar, atualizar ou excluir. Eles são os elementos básicos da arquitetura REST.

Por exemplo, em uma loja de comércio eletrónico online, os produtos, utilizadores e metadados são considerados recursos, pois podem ser manipulados. Os recursos podem ser transferidos para outra aplicação através da API.

Mencione algumas vantagens e desvantagens de uma API REST.

Resposta: As vantagens das APIs REST são:

  • É fácil de implementar.
  • Os recursos podem ser manipulados com facilidade.
  • É escalável devido à sua arquitetura cliente-servidor.
  • Suporta vários formatos de transferência de dados, como XML e JSON.

As suas desvantagens são:

  • Não é possível manter um estado entre as requisições.
  • A verdadeira origem do recurso não é conhecida devido à arquitetura em camadas.
  • Não é adequado para consultas ou requisições complexas.

Defina o modelo REST.

Resposta: Um modelo REST é um utilitário ou cliente que possibilita o acesso a APIs REST no framework Spring. Ele simplifica o código padrão que pode ser necessário escrever para solicitar um recurso de uma API REST.

O que é RESTful?

Resposta: APIs ou serviços RESTful são interfaces que seguem o modelo arquitetónico REST (Representational State Transfer) e operam através de protocolos como o HTTP.

O que são serviços Web RESTful?

Resposta: Os serviços Web RESTful são projetados para funcionar melhor na Web. Representational State Transfer (REST) é um estilo arquitetónico que especifica restrições, como interface uniforme, arquitetura em camadas e ausência de estado, que, quando aplicadas a um serviço Web, proporcionam características desejáveis como performance e escalabilidade, o que permite que os serviços operem de forma eficiente na web.

Como testar serviços Web RESTful?

Resposta: Para testar um serviço web RESTful, pode utilizar um cliente REST como Postman ou Thunder Client e fazer consultas ao serviço web que pretende testar. Ao receber uma resposta, é fundamental compreender a sua estrutura e significado.

Para testar uma API complexa com muitos endpoints, é recomendável dividir os testes em etapas, realizando testes de unidade, integração, performance e ponta a ponta.

Mencione alguns recursos dos serviços Web RESTful.

Resposta: Alguns dos principais recursos dos serviços Web RESTful são:

  • Suporte para vários formatos de mídia, como JSON e XML.
  • Escalabilidade
  • Isolamento entre cliente e servidor
  • Flexibilidade

Definir classes de recursos raiz RESTful.

Resposta: Classes de recursos raiz são “objetos Java simples” (POJOs) anotados com @Path ou que tenham pelo menos um método anotado com @Path ou um designador de método de requisição como @GET, @POST, @PUT ou @DELETE.

O que é URI?

Resposta: URI significa Identificador Uniforme de Recursos. É uma sequência de caracteres usada para localizar ou identificar recursos de uma API ou serviço. Ela usa o nome ou localização do recurso para o identificar, mas não está limitada a um método ou técnica específica.

O que é ausência de estado em REST?

Resposta: A ausência de estado é uma restrição aplicada a uma API onde quaisquer duas requisições não têm conhecimento uma da outra. Ou seja, o estado das requisições não é mantido. Uma vez que uma requisição é atendida, ela simplesmente termina após obter uma resposta.

O que é JAX-RS?

Resposta: JAX-RS é uma API Java que permite criar aplicações em Java que utilizam a arquitetura REST. Esta API facilita o desenvolvimento de aplicações REST em Java.

Quais são as principais anotações na API JAX-RS?

Resposta: As anotações em JAX-RS são usadas por desenvolvedores para modificar classes Java, definir recursos e os métodos que podem ser executados sobre esses recursos. Algumas anotações importantes da API JAX-RS são:

  • @GET: Usada para fazer requisições GET no HTTP.
  • @POST: Usada para fazer requisições POST no HTTP.
  • @Path: Refere-se ao caminho relativo de uma classe Java.
  • @QueryParam: Refere-se aos parâmetros de consulta da URI ou URL.

Quais são algumas das principais funcionalidades da API JAX-RS?

Resposta: Os recursos do JAX-RS são:

  • Cache do lado do cliente
  • Cache do lado do servidor
  • Personalização da string de consulta
  • Anotações em tempo de execução

Como configurar aplicações JAX-RS?

Resposta: Uma aplicação JAX-RS consiste em, pelo menos, uma classe de recurso agrupada em um arquivo WAR. O URI base a partir do qual os recursos de uma aplicação respondem a requisições pode ser definido de duas maneiras:

  • Usando a anotação @ApplicationPath em uma subclasse de javax.ws.rs.core.Application agrupada no WAR.
  • Usando a tag de mapeamento de servlet no descritor de implementação web.xml do WAR.

O que são JAX-WS e JAX-RS?

Resposta: JAX-WS é uma API Jakarta XML Web Services usada para desenvolver APIs que utilizam o protocolo SOAP (Simple Object Access Protocol), um protocolo de mensagens baseado em XML.

Em contrapartida, JAX-RS é uma API Java usada para construir serviços web que utilizam a arquitetura REST.

O que são códigos de status HTTP?

Resposta: Os códigos de status são simplesmente uma forma de comunicar o estado da resposta enviada do servidor para o cliente. Eles estão presentes nos cabeçalhos de resposta enviados pelo servidor.

O cliente pode determinar se a requisição falhou, foi atendida ou se existe algum problema com a resposta através dos códigos de status.

Seguem alguns códigos de status comuns HTTP:

  • 200 – Significa “OK”. Indica que a requisição foi bem-sucedida e a resposta está correta.
  • 404 – Significa “Não Encontrado”. Indica que um recurso não existe no servidor ou que um endpoint não existe.
  • 500 – Significa “Erro Interno do Servidor”. Geralmente ocorre quando o servidor não pode gerar uma resposta correta ou quando existe um erro que não é lançado explicitamente.
  • 503 – Significa “Serviço Indisponível”. Indica que o servidor não pode processar nenhuma requisição no momento, provavelmente porque está inoperante ou sobrecarregado por muitas requisições. Também pode ocorrer quando o servidor está em manutenção.

O que são métodos HTTP?

Resposta: Os métodos HTTP são utilizados para executar um determinado tipo de ação sobre um recurso específico de uma API. Por exemplo, para obter uma lista de filmes de uma API de coleções de filmes, pode ser usado o método GET fornecido pelo HTTP. Se o objetivo é atualizar dados, pode ser usado o método POST também fornecido pelo HTTP.

Os métodos HTTP mais utilizados são:

  • GET: As requisições GET devem ser usadas apenas para buscar dados.
  • POST: Atualiza o recurso ao enviar um recurso recém-atualizado para o servidor.
  • DELETE: Exclui o recurso especificado.
  • PATCH: Modifica parcialmente o recurso.

Como funciona a autenticação básica HTTP?

Resposta: A autenticação é um processo de verificação da autenticidade de um cliente para manter a segurança dos dados. Em HTTP, a autenticação funciona através de um cabeçalho de autorização, que é enviado pelo cliente.

O cabeçalho de autorização contém o nome de utilizador/ID e senha do cliente, que são verificados pelo servidor para conceder o acesso.

Um aspeto importante a notar é que, ao usar a autenticação HTTP, o canal pelo qual as credenciais são transmitidas deve ser encriptado e seguro.

É possível proteger o canal usando a camada SSL, que é parte integrante do HTTPS. Assim, ao lidar com credenciais, é recomendável usar HTTPS em vez de HTTP simples.

Quais são os componentes principais de uma requisição HTTP?

Resposta: Uma requisição HTTP é constituída pelos seguintes componentes:

  • Linha de requisição: É a primeira linha de uma requisição e contém o método HTTP, o caminho ou endpoint e o número da versão HTTP.
  • Cabeçalhos: Os cabeçalhos HTTP são usados para fornecer metadados da requisição.
  • Corpo (Opcional): Este componente está presente apenas em alguns dos métodos de requisição. Não é necessário para requisições GET, mas é requerido para requisições POST. É a mensagem de requisição real.

Quais são os componentes principais de uma resposta HTTP?

Resposta: Uma resposta HTTP é constituída pelos seguintes componentes:

  • Status: Refere-se ao código de status HTTP enviado pelo servidor.
  • Cabeçalhos: Assim como as requisições, as respostas também têm seus respetivos cabeçalhos, que fornecem informações importantes sobre a resposta.
  • Mensagem: São os dados reais enviados do servidor para o cliente em resposta a uma solicitação de um recurso específico.

Qual a diferença entre REST e AJAX?

Resposta: AJAX é um cliente que permite acessar APIs RESTful. Ele é usado para enviar requisições assíncronas usando JavaScript.

REST, ou Transferência de Estado Representacional, é uma arquitetura que pode ser implementada para criar APIs RESTful. Simplificando, para enviar requisições HTTP, pode-se utilizar o AJAX como cliente. No entanto, para criar APIs RESTful, a arquitetura REST é necessária.

Qual a diferença entre SOAP e REST?

Resposta: Transferência de Estado Representacional, ou REST, é uma arquitetura com restrições mínimas para criação de APIs. SOAP, ou Simple Object Access Protocol, é um protocolo com requisitos rigorosos para implementar uma API.

REST é mais flexível e fácil de usar do que SOAP. SOAP usa mensagens baseadas em XML, enquanto REST permite o uso de vários formatos de transferência de dados, como JSON e XML. Comparado ao SOAP, REST é mais leve e rápido.

Os serviços web SOAP têm segurança integrada, o que é uma vantagem em relação ao REST. No entanto, os recursos adicionados também o tornam complexo e pesado de usar.

Qual a diferença entre PUT e POST?

Resposta: POST é um método de requisição HTTP que envia dados para o servidor. Ao enviar várias requisições POST para um recurso específico, podem ocorrer efeitos colaterais nos dados. Por exemplo, se o objetivo for adicionar um artigo a uma coleção, várias requisições POST resultarão na adição de múltiplos artigos, levando a entradas redundantes.

PUT é um método de requisição HTTP que envia dados para o servidor para um recurso específico, mas atualiza os dados apenas uma vez. O envio de várias requisições PUT para um recurso específico não causará efeitos colaterais. Os dados serão adicionados apenas uma vez. Em PUT, se o recurso não existir, um novo será criado. Caso contrário, o existente será atualizado.

PUT é idempotente, enquanto POST não é.

O que é uma carga útil?

Resposta: Uma carga útil em uma API REST é simplesmente o corpo da requisição enviada pelo cliente para o servidor. São os dados que se deseja enviar para o servidor para obter uma resposta.

Qual o tamanho máximo de carga útil que pode ser enviada em métodos POST?

Resposta: Não existe um limite padrão definido pelo protocolo HTTP. O limite dependerá do limite máximo do cliente ou do servidor, o que for menor.

Ao criar URIs, quais as boas práticas a seguir?

Resposta: Alguns pontos chave a ter em consideração ao criar URIs são:

  • Evite usar extensões de arquivos.
  • Mantenha a consistência em todos os URIs.
  • Divida os URIs em domínios e subdomínios para diferentes conjuntos de recursos.
  • Utilize hífens ou underscores para separar as palavras nas frases inseridas em URIs.
  • Use a barra para indicar hierarquia de recursos.
  • Codifique um URI utilizando a codificação apropriada.
  • Tente tornar o URI legível para humanos.

O que são métodos idempotentes?

Resposta: Os métodos HTTP idempotentes têm o mesmo efeito no servidor, independentemente do envio de várias requisições idênticas. Por exemplo, se forem enviadas várias requisições DELETE idênticas para um recurso específico, o recurso não será alterado a cada requisição. Ele será atualizado como se apenas uma requisição tivesse sido enviada.

Alguns métodos idempotentes incluem:

  • PUT
  • DELETE
  • GET
  • HEAD
  • OPTIONS

O que é Postman?

Resposta: Postman é uma ferramenta de desenvolvimento de API para desenvolver, modificar e testar APIs. Ela oferece várias funcionalidades para criar e testar APIs rapidamente, sem a necessidade de configurar um cliente.

Resposta: O cabeçalho Cache-Control contém instruções ou diretivas para definir o comportamento do cache em navegadores e servidores. Ele informa ao navegador ou servidor o que armazenar em cache e por quanto tempo deve ser armazenado antes de ser novamente solicitado por meio de uma requisição de rede.

O cabeçalho Cache-Control inclui as seguintes diretivas:-

  • max-age
  • no-cache
  • private
  • public
  • no-store
  • immutable

Definir mensagens em serviços web RESTful.

Resposta: As mensagens em serviços web RESTful referem-se à requisição HTTP que o cliente envia para o servidor e à resposta HTTP que o servidor envia de volta. Essa comunicação entre cliente e servidor é chamada de sistema de mensagens.

Qual a diferença entre arquitetura monolítica, SOA e de microsserviços?

Resposta: Em uma arquitetura monolítica, tudo é gerenciado em um único lugar. O cliente, o servidor e o banco de dados são gerenciados em uma única localização. Daí o termo “monolítica”, que se refere a um único bloco ou pedra.

SOA significa Arquitetura Orientada a Serviços. Nesta arquitetura, diferentes aspetos da aplicação são gerenciados por diferentes serviços, que também são softwares. Portanto, é uma combinação de vários módulos de software de serviço. A integração é a parte chave desta arquitetura.

A arquitetura de microsserviços é semelhante à SOA, mas, ao contrário da SOA, possui vários programas de software autônomos que se comunicam entre si através de APIs. Ao contrário da arquitetura monolítica, tudo aqui é autônomo e, até certo ponto, independente.

Como funciona a arquitetura de microsserviços?

Resposta: Em uma arquitetura de microsserviços, as aplicações são divididas em subunidades menores que são independentes umas das outras e funcionam por conta própria, comunicando-se através de um conjunto bem definido de APIs.

Alguns dos benefícios da arquitetura de microsserviços incluem agilidade, flexibilidade, escalabilidade, tecnologias independentes, serviços reutilizáveis e fácil implantação.

O que é CRUD?

Resposta: CRUD significa Criar, Ler, Atualizar, Excluir. Estas são as operações que podem ser realizadas sobre um recurso específico. Uma API que suporta todas essas operações é conhecida como API CRUD. Estas são as operações mais básicas que podem ser realizadas por uma API sobre um recurso.

O que é cache?

Resposta: Cache é uma técnica de armazenamento de uma resposta ou requisição no cliente ou no servidor para uso posterior.

As respostas são geralmente armazenadas em cache no cliente, pois, se o cliente faz a mesma requisição várias vezes em um curto período de tempo, não faz sentido solicitar a resposta através da rede novamente, desperdiçando largura de banda.

Qual a utilidade de @RequestMapping?

Resposta: É uma anotação no framework Spring que é usada para mapear requisições web a classes e/ou métodos manipuladores específicos.

O que @PathVariable faz?

Resposta: A anotação @PathVariable no framework Spring é usada para extrair o valor das variáveis de um modelo e atribuir seus valores a uma variável de método.

Defina HttpMessageConverter.

Resposta: Os conversores de mensagens HTTP são usados quando uma requisição HTTP (ou partes dela) precisa ser convertida para um tipo necessário como argumento para um método manipulador ou quando o valor retornado por um método manipulador precisa ser convertido para criar uma resposta HTTP.

Resposta: Algumas ferramentas que podem ajudar no teste de APIs são:

  • Postman
  • Rest Assured
  • Rest Sharp
  • Katalon
  • ReadyAPI
  • Apigee

Considerações Finais

Hoje em dia, as APIs ganharam enorme popularidade com o avanço da internet. Outro motivo pelo qual as APIs REST são tão populares é a sua facilidade de desenvolvimento e uso.

Se estiver se preparando para uma entrevista, prepare-se para responder às perguntas acima sobre APIs REST que podem surgir em sua entrevista.

A seguir, você pode investigar como extrair dados de um site usando a API de extração web do etechpt.com.