Na indústria de desenvolvimento de software , as integrações desempenham um papel fundamental no design de aplicativos. Uma das principais tecnologias para isso é a API REST . O conhecimento da API REST é uma habilidade importante para todo especialista em tecnologia. Neste artigo, apresentaremos 25 perguntas sobre API REST que ajudarão você a se preparar para uma entrevista de emprego e a aprimorar suas habilidades. Gostar de ler!
Em primeiro lugar, o entrevistador costuma dividir as questões sobre API REST em teóricas e práticas. Primeiro, eles fazem 2 a 3 perguntas teóricas sobre terminologia e métodos de solicitação HTTP e, em seguida, você recebe uma tarefa prática sobre como redigir uma solicitação.
Este artigo contém perguntas teóricas frequentes e pretendo publicar exemplos de tarefas práticas relacionadas à API REST no próximo artigo. Não sabemos com antecedência quais perguntas você receberá em uma entrevista, mas tenho certeza de que, no processo de trabalhar em nossa lista de perguntas típicas, você provavelmente se aprofundará no tópico e aprimorará seu conhecimento sobre a API REST em qualquer caso.
Agora, vamos do simples ao complexo, começando com a terminologia básica e continuando com uma seção com questões mais complexas.
Resposta: Existem três termos usados quando se refere a REST que muitas vezes são considerados a mesma coisa, mas isso não é inteiramente verdade. Esses termos são REST, API REST e API RESTful. Agora haverá uma resposta sobre REST, o termo significa Representational State Transfer e é um estilo de arquitetura baseado no protocolo HTTP (Hypertext Transfer Protocol) para desenvolvimento de aplicações que possuem front-end e/ou integração com sistemas externos. REST descreve diretrizes que os serviços de API projetados devem seguir. Esses princípios garantem que as solicitações sejam transmitidas entre cliente e servidor usando HTTP.
Resposta: Uma API é uma interface de programação que permite que aplicativos individuais se comuniquem e troquem dados. Por exemplo, um aplicativo de entrega de comida pode usar a API do Google Maps para rastrear a localização do entregador e exibi-la em um mapa. Uma API REST é uma API que segue os princípios do REST, tratando todos os dados como recursos, cada um representado por um URI (Uniform Resource Identifier) exclusivo.
Resposta: Uma API RESTful é uma API projetada de acordo com as regras (ou você também pode dizer “princípios”) do REST. Em outras palavras, a diferença entre API REST e API RESTful é terminológica. O primeiro caso refere-se a um conjunto de regras REST, e o segundo refere-se à implementação de uma API específica seguindo regras REST. O termo API RESTful é frequentemente substituído por API REST ou mesmo REST apenas por uma questão de brevidade. Quando os analistas de sistema desenham setas rotuladas como REST em um diagrama de aplicativo, eles significam uma API RESTful.
Resposta: As solicitações da API REST devem seguir dois princípios básicos: Separação em cliente e servidor: A interação entre o cliente e o servidor é realizada na forma de solicitações e respostas. Somente clientes podem fazer solicitações e somente servidores podem enviar respostas para funcionarem independentemente uns dos outros. Protocolo único: A interação entre cliente e servidor deve ser realizada por meio de um único protocolo. Para REST, este protocolo é HTTP.
Resposta: Você pode citar pelo menos mais 4 princípios. As solicitações da API REST não armazenam estado no servidor e podem passar por camadas de servidores e serem armazenadas em cache. Você também pode enviar código executável aos clientes na resposta do servidor. Servidor sem estado: O servidor não armazena nenhuma informação sobre solicitações/respostas anteriores. Cada solicitação e resposta contém todas as informações necessárias para concluir a interação. A comunicação sem estado reduz a carga do servidor, economiza memória e melhora o desempenho. Sistema em camadas: Servidores adicionais são possíveis entre o cliente e o servidor API na forma de camadas para executar diferentes funções. Em um sistema construído com base nos princípios REST, as camadas são modulares e podem ser adicionadas e removidas sem afetar as comunicações entre o cliente e o servidor. Capacidade de cache: as respostas do servidor indicam se seu recurso pode ser armazenado em cache para que os clientes possam armazenar qualquer recurso em cache para melhorar o desempenho. Código sob demanda: O servidor pode enviar código executável aos clientes em sua resposta para execução no aplicativo cliente.
Resposta: Em REST, todo objeto acessível no lado do servidor é designado como um recurso. Um recurso é um objeto que possui um tipo, dados associados a ele, um relacionamento com outros recursos no servidor e uma lista de métodos que podem ser usados para trabalhar com ele. Por exemplo, um recurso pode ser um arquivo HTML ou de texto, um arquivo de dados, uma imagem ou vídeo ou um arquivo de código executável. Um recurso é identificado por um Identificador Uniforme de Recursos ou URI. Os clientes acessam recursos usando seus URIs em solicitações HTTP.
Resposta: URI significa Identificador Uniforme de Recursos. Esta é uma string que identifica um recurso no servidor. Cada recurso possui seu próprio URI exclusivo, que, quando incluído em uma solicitação HTTP, permite que os clientes acessem e executem ações nesse recurso. O processo de referência a um recurso por seu URI é chamado de “endereçamento”.
Resposta: CRUD significa "Criar, Ler, Atualizar, Excluir". Estas são as quatro principais ações que podem ser executadas em bancos de dados por meio da API REST. Cada ação tem seu próprio método de solicitação HTTP:
Resposta: A carga útil da resposta HTTP refere-se aos dados do recurso que foram solicitados pelo cliente. Isso também é brevemente chamado de "carga útil de resposta HTTP". Esses dados podem estar em JSON, XML, HTML, imagens, arquivos e assim por diante, dependendo exatamente do que o servidor fornece.
Resposta: Mensagens em REST referem-se à troca de mensagens entre o cliente e o servidor. A comunicação sempre começa com o cliente fazendo uma solicitação HTTP ao servidor. O servidor processa essa solicitação e, em seguida, envia de volta uma resposta HTTP que indica o status da solicitação e quaisquer recursos solicitados pelo cliente.
Resposta: No contexto do REST, o termo “corretor de mensagens” é um middleware que serve para passar mensagens entre vários componentes ou sistemas em uma aplicação distribuída. O broker pode fornecer troca assíncrona de dados, enfileiramento de mensagens e processamento de mensagens entre vários módulos do sistema.
Os corretores de mensagens podem ser usados para gerenciar operações assíncronas ou enviar notificações. O agente de mensagens não é um elemento REST nativo porque... REST se concentra na comunicação síncrona entre cliente e servidor usando solicitações HTTP.
Resposta: O método de solicitação HTTP especifica a ação desejada que o servidor executará no recurso. Em REST, existem quatro métodos principais para fazer solicitações HTTP de um cliente para um servidor:
Resposta: POST serve para criar um recurso no servidor, enquanto PUT serve para substituir um recurso em um URI específico por outro recurso. Se você usar PUT em um URI que já possui um recurso associado, PUT o substituirá. Se não houver recurso no URI especificado, PUT cria um. PUT é idempotente, o que significa que chamá-lo várias vezes resultará na criação de apenas um recurso. Isso acontece porque cada chamada substitui um recurso existente (ou cria um novo se não houver nada para substituir). POST não é idempotente. Se, por exemplo, você chamar POST 10 vezes, serão criados 10 recursos diferentes no servidor, cada um com seu próprio URI. Embora raramente usadas, as respostas POST podem ser armazenadas em cache, mas as respostas PUT não. As solicitações POST geralmente são consideradas não armazenáveis em cache, mas podem ser armazenadas em cache quando contêm informações claras sobre a “atualidade” dos dados. Uma resposta mais detalhada é que a resposta para uma solicitação POST (ou PATCH) pode ser armazenada em cache se os dados forem "frescos" e o cabeçalho Content-Location (en-US) estiver definido, mas isso raramente é implementado. Portanto, o cache POST deve ser evitado, se possível.
Resposta: Em REST, existem os seguintes componentes básicos de uma solicitação HTTP: O método de solicitação que será feito ao recurso (ou seja, GET, POST, PUT, DELETE). Um URI que identifica o recurso solicitado no servidor. Versão HTTP – ou seja, qual versão deve estar na resposta do servidor. O cabeçalho da solicitação HTTP contém metadados sobre a solicitação, como agente do usuário, formatos de arquivo aceitos pelo cliente, formato do corpo da solicitação, idioma, preferências de cache, etc. O corpo de uma solicitação HTTP contém todos os dados associados à solicitação . Isso só é necessário se a solicitação for para alterar dados no servidor usando os métodos POST ou PUT.
Responda: As respostas HTTP são enviadas do servidor para o cliente. Informam ao cliente que a ação solicitada foi (ou não) concluída e a entrega dos recursos solicitados. Existem quatro componentes principais de uma resposta HTTP: Versão HTTP usada. Barra de status com status da solicitação e código de status da resposta HTTP. Cabeçalho de resposta HTTP com metadados sobre a resposta, incluindo hora, nome do servidor, agente do usuário, formatos de arquivo de recursos retornados e informações de cache. Corpo da resposta HTTP contendo dados sobre o recurso solicitado pelo cliente
Resposta: O servidor retorna os seguintes códigos de status de operação quando a solicitação é processada com sucesso:
Resposta: O servidor retorna os seguintes códigos de status ao redirecionar uma solicitação:
Resposta: O servidor retorna os seguintes códigos quando a solicitação não é bem-sucedida:
Responda: O servidor retorna os seguintes códigos quando há um erro no servidor:
500 Erro interno do servidor: a solicitação não foi concluída devido a um problema inesperado com o servidor.
502 Bad Gateway: A solicitação não foi concluída devido a uma resposta incorreta do servidor upstream.
503 Serviço indisponível: O servidor não conseguiu processar a solicitação devido a manutenção, sobrecarga ou outros distúrbios temporários.
Você pode encontrar uma lista dos códigos HTTP mais comuns aqui
Resposta: GraphQL é uma linguagem de consulta que permite aos clientes consultar apenas os dados de que precisam. No GraphQL, o cliente define a estrutura e o formato dos dados que deseja receber, e o servidor os retorna de acordo com essa solicitação. A principal diferença é que o REST possui um formato fixo de solicitação e resposta para cada recurso, enquanto o GraphQL permite que os clientes definam sua solicitação e obtenham apenas as informações de que precisam, tornando-o mais eficiente e flexível de usar.
Resposta: REST e SOAP (Simple Object Access Protocol) são duas abordagens para construir APIs. Existem 3 diferenças principais entre eles:
Resposta: JavaScript assíncrono ou AJAX é um conjunto de tecnologias de desenvolvimento web usadas em aplicações web. Basicamente, o AJAX permite que uma página da Web faça solicitações ao servidor e atualize a interface da página sem precisar atualizar a página inteira.
Um cliente AJAX pode usar a API REST em suas solicitações, mas o AJAX não precisa funcionar apenas com a API REST. APIs REST podem se comunicar com qualquer cliente, quer ele use AJAX ou não.
Ao contrário do REST, que usa solicitações e respostas HTTP para trocar mensagens, o AJAX envia suas solicitações ao servidor usando o objeto XMLHttpRequest integrado ao JavaScript. As respostas do servidor são executadas pelo código JavaScript da página para alterar seu conteúdo.
Resposta: A abordagem Contract First para o desenvolvimento da API REST é uma metodologia na qual a especificação e o contrato da API são criados e definidos antes do início do desenvolvimento real. Este contrato serve como um importante documento que define como os clientes podem interagir com a API e quais resultados esperados serão obtidos nas diversas solicitações.
Resposta: As seguintes vantagens da abordagem Contract First podem ser mencionadas:
Resposta: A abordagem Code First para o desenvolvimento da API REST é uma metodologia na qual a funcionalidade da API é desenvolvida primeiro e, em seguida, uma especificação da API é gerada automaticamente com base nessa funcionalidade. A marca registrada da abordagem Code First é que os desenvolvedores se concentram em escrever a lógica da API e usam ferramentas que lhes permitem criar automaticamente documentação e especificações com base nessa lógica.
Em geral, ambas as abordagens, Code First e Contract First, podem ser combinadas no mesmo projeto de desenvolvimento de API. Neste caso, Code First é usado para prototipagem rápida, seguido de Contract First para formalizar o contrato.
Espero que este artigo seja útil para você na preparação para uma entrevista de emprego ou para atualizar seu conhecimento sobre a API REST.