o design da API repousante ou repousante (“Representational State Transfer”) é projetado para tirar partido dos protocolos existentes. Enquanto o descanso pode ser usado sobre quase qualquer protocolo, ele geralmente tira vantagem de HTTP quando usado para APIs Web. Isso significa que os desenvolvedores não precisam instalar bibliotecas ou softwares adicionais, a fim de tirar proveito de um projeto de API de descanso. O projeto da API foi definido pelo Dr. Roy Fielding em sua tese de doutorado em 2000. É notável pela sua incrível camada de flexibilidade., Uma vez que os dados não estão ligados a métodos e recursos, o REST tem a capacidade de lidar com vários tipos de chamadas, devolver diferentes formatos de dados e até mesmo mudar estruturalmente com a correta implementação da hipermedia.esta liberdade e flexibilidade inerentes ao design da API de descanso permitem-lhe construir uma API que atende às suas necessidades, ao mesmo tempo que atende às necessidades de clientes muito diversos. Ao contrário do SOAP, REST não é restringido ao XML, mas pode retornar XML, JSON, YAML ou qualquer outro formato dependendo do que o cliente pede., E ao contrário do RPC, os usuários não são obrigados a saber nomes de procedimentos ou parâmetros específicos em uma ordem específica.
no entanto, há desvantagens para o projeto da API descanso. Você pode perder a capacidade de manter o estado em repouso, como em sessões, e pode ser mais difícil para os desenvolvedores mais novos usar. Também é importante entender o que faz uma API descanso repousante, e por que essas restrições existem antes de construir sua API. Afinal, se você não entende por que algo é projetado da maneira que é, você pode impedir seus esforços sem sequer percebê-lo.,
compreender o design da API de descanso
embora a maioria das API afirme ser repousante, ficam aquém dos requisitos e restrições afirmados pelo Dr. Fielding. Existem seis restrições-chave para REST API design para estar ciente ao decidir se este é o tipo de API certo para o seu projeto.
Cliente-Servidor
a restrição cliente-servidor funciona no conceito de que o cliente e o servidor devem ser separados um do outro e permitido evoluir individual e independentemente., Em outras palavras, eu deveria ser capaz de fazer alterações na minha aplicação móvel sem impactar a estrutura de dados ou o projeto de banco de dados no servidor. Ao mesmo tempo, eu deveria ser capaz de modificar o banco de dados ou fazer alterações no meu aplicativo servidor sem impactar o cliente móvel. Isso cria uma separação de preocupações, deixando cada aplicação crescer e escalar independentemente do outro e permitindo que sua organização cresça de forma rápida e eficiente.,
apátridas
APIs de repouso são apátridas, o que significa que as chamadas podem ser feitas independentemente uma da outra, e cada chamada contém todos os dados necessários para completar-se com sucesso. Uma API de descanso não deve depender de dados sendo armazenados no servidor ou sessões para determinar o que fazer com uma chamada, mas sim confiar apenas nos dados que são fornecidos nessa chamada em si. A informação de identificação não está sendo armazenada no servidor ao fazer chamadas. Em vez disso, cada chamada tem os dados necessários em si, como a chave API, token de acesso, ID de usuário, etc., Isso também ajuda a aumentar a API de confiabilidade por ter todos os dados necessários para efectuar a chamada, em vez de depender de uma série de chamadas com o estado do servidor para criar um objeto, o que pode resultar em falha parcial. Em vez disso, a fim de reduzir os requisitos de memória e manter a sua aplicação o mais escalável possível, uma API repousante requer que qualquer estado seja armazenado no cliente—não no servidor.
Cache
uma API apátrida pode aumentar as despesas gerais do pedido através da movimentação de grandes cargas de chamadas recebidas e recebidas, uma API de repouso deve ser projetada para incentivar o armazenamento de dados cacheáveis., Isto significa que quando os dados são cacheáveis, a resposta deve indicar que os dados podem ser armazenados até um certo tempo (expira-at), ou nos casos em que os dados precisam ser em tempo real, que a resposta não deve ser cache pelo cliente. Ao habilitar esta restrição crítica, você não só reduzirá muito o número de interações com sua API, reduzindo o uso interno do servidor, mas também fornecerá aos usuários da API as ferramentas necessárias para fornecer os aplicativos mais rápidos e eficientes possíveis. Tenha em mente que caching é feito do lado do cliente., Embora você possa ser capaz de armazenar alguns dados dentro de sua arquitetura para realizar o desempenho global, a intenção é instruir o cliente sobre como ele deve proceder e se o cliente pode ou não armazenar os dados temporariamente.
Interface uniforme
a chave para o cliente de dissociação do servidor é ter uma interface uniforme que permite a evolução independente da aplicação sem ter os Serviços, modelos ou ações da aplicação firmemente acoplados à própria camada API., A interface uniforme permite que o Cliente Fale com o servidor em uma única língua, independente da infra-estrutura arquitetônica de ambos. Esta interface deve fornecer um meio imutável e padronizado de comunicação entre o cliente e o servidor, como usar HTTP com recursos URI, CRUD (criar, ler, atualizar, excluir) e JSON.
sistema em camadas
como o nome indica, um sistema em camadas é um sistema composto por camadas, com cada camada tendo uma funcionalidade e responsabilidade específicas., Se pensarmos em um modelo View Controller framework, cada camada tem suas próprias responsabilidades, com os modelos que incluem como os dados devem ser formados, o controlador focando nas ações recebidas e a visão focando na saída. Cada camada é separada, mas também interage com a outra. No projeto da API REST, o mesmo princípio é verdadeiro, com diferentes camadas da arquitetura trabalhando juntos para construir uma hierarquia que ajuda a criar uma aplicação mais escalável e modular.,
um sistema em camadas também permite encapsular sistemas legados e mover funcionalidades menos comumente acessadas para um intermediário compartilhado, ao mesmo tempo que protege componentes mais modernos e comumente usados deles. Além disso, o sistema em camadas lhe dá a liberdade de mover sistemas dentro e fora de sua arquitetura à medida que as tecnologias e serviços evoluem, aumentando a flexibilidade e longevidade, desde que você mantenha os diferentes módulos o mais livremente acoplados possível., Há benefícios substanciais de segurança de ter um sistema em camadas, uma vez que ele permite que você pare ataques na camada proxy, ou dentro de outras camadas, impedindo-os de chegar a sua arquitetura de servidor real. Utilizando um sistema em camadas com um proxy, ou criando um único ponto de acesso, você é capaz de manter aspectos críticos e mais vulneráveis de sua arquitetura por trás de um firewall, impedindo a interação direta com eles pelo cliente., Tenha em mente que a segurança não é baseada em uma única solução “stop all”, mas em ter várias camadas com a compreensão de que certas verificações de segurança podem falhar ou ser contornadas. Como tal, quanto mais segurança você é capaz de implementar em seu sistema, mais provável você é de prevenir ataques prejudiciais.
Code on Demand
talvez o menos conhecido dos seis constrangimentos, e a única restrição opcional, Code on Demand permite que o código ou applets sejam transmitidos através da API para uso dentro da aplicação., Em essência, cria uma aplicação inteligente que já não depende apenas da sua própria estrutura de código. No entanto, talvez por estar à frente de seu tempo, o Code on Demand tem lutado para a adoção como APIs Web são consumidos em várias línguas e a transmissão de código levanta questões de segurança e preocupações. (Por exemplo, o diretório teria que ser writeable, e o firewall teria que deixar o que pode normalmente ser restrito conteúdo através.)
juntas, estas restrições compõem a teoria da transferência de Estado representacional, ou repouso., À medida que você olha para trás através destes você pode ver como cada restrição sucessiva se constrói em cima do anterior, eventualmente criando uma interface de programa de aplicação bastante complexa—mas poderosa e flexível. Mas o mais importante, essas restrições constituem um design que funciona de forma semelhante à forma como acessamos páginas em nossos navegadores na World Wide Web. Ele cria uma API que não é ditada por sua arquitetura, mas pelas representações que ele retorna, e uma API que—enquanto arquitetonicamente apátridas—depende da representação para ditar o estado da aplicação.,
para mais informações sobre o Design da API REST, consulte o eBook Undisturbed REST: um guia para desenhar a API perfeita.
Deixe uma resposta