REST Architectural Constraints

REST stands for Representational State Transfer, a term coined by Roy Fielding in 2000. É um estilo de arquitetura para projetar aplicativos vagamente acoplados sobre HTTP, que é frequentemente usado no desenvolvimento de serviços web. O descanso não impõe nenhuma regra sobre como deve ser implementado a um nível mais baixo, apenas coloca Diretrizes de design de alto nível e deixa você pensar em sua própria implementação.No meu último emprego, concebi APIs repousantes para uma grande empresa de telecomunicações durante dois bons anos. Neste post, eu estarei compartilhando meus pensamentos além das práticas padrão de design. Você pode não concordar comigo em alguns pontos, e isso é perfeitamente OK. Terei todo o gosto em discutir qualquer coisa de si com uma mente aberta.Vamos começar com coisas específicas de design padrão para esclarecer o que Roy Fielding quer que construamos. Então vamos discutir os meus pensamentos, que serão mais para os pontos mais finos, enquanto você projetar sua APIs repousante.

restrições arquitectónicas

REST define 6 restrições arquitectónicas que fazem de qualquer serviço web-uma verdadeira API repousante.

  1. interface Uniforme
  2. Client–server
  3. Stateless
  4. Cache
  5. sistema de Camadas
  6. Código sob demanda (opcional)

interface Uniforme

Como a restrição de nome próprio, aplica-se, você DEVE decidir APIs de interface para os recursos no interior do sistema que são expostos a API de consumidores e siga religiosamente. Um recurso no sistema deve ter apenas um URI lógico, e isso deve fornecer uma maneira de obter dados relacionados ou adicionais. É sempre melhor sinonimizar um recurso com uma página web.

qualquer recurso único não deve ser muito grande e conter tudo e cada um em sua representação. Sempre que relevante, um recurso deve conter ligações (HATEOAS) que apontem para URIs relativos para obter informações relacionadas.

também, as representações de recursos em todo o sistema devem seguir diretrizes específicas, tais como Convenções de nomeação, formatos de link ou formato de dados (XML ou/e JSON).

todos os recursos devem ser acessíveis através de uma abordagem comum, como HTTP GET e similarmente modificado usando uma abordagem consistente.

uma vez que um desenvolvedor se familiarize com uma das suas APIs, ele deve ser capaz de seguir uma abordagem semelhante para outras APIs.

Client-server

esta restrição essencialmente significa que a aplicação cliente e a aplicação servidor devem ser capazes de evoluir separadamente sem qualquer dependência uns dos outros. Um cliente deve conhecer apenas URIs de recursos, e isso é tudo. Hoje, esta é a prática padrão no desenvolvimento da web, por isso nada de fantasia é necessária do seu lado. Mantém as coisas simples.Servidores e clientes também podem ser substituídos e desenvolvidos independentemente, desde que a interface entre eles não seja alterada.

apátrida

Roy fielding inspirou-se em HTTP, por isso reflecte nesta restrição. Torna todas as interacções cliente-servidor apátridas. O servidor não irá armazenar nada sobre o último pedido HTTP feito pelo cliente. Tratará todos os pedidos como novos. Sem sessão, sem história.

se a aplicação cliente precisa ser uma aplicação de Estado para o usuário final, onde o usuário faz login de uma vez e faz outras operações autorizadas depois disso, então cada pedido do cliente deve conter todas as informações necessárias para atender a solicitação-incluindo detalhes de autenticação e autorização.

nenhum contexto de cliente deve ser armazenado no servidor entre pedidos. O cliente é responsável pela gestão do estado da aplicação.

Cacheable

no mundo de hoje, a cache de dados e Respostas é de extrema importância onde quer que sejam aplicáveis/possíveis. A página web que você está lendo aqui também é uma versão em cache da página HTML. Cache traz melhorias de desempenho para o lado cliente e maior escopo para escalabilidade para um servidor porque a carga tem reduzido.

em repouso, o caching deve ser aplicado aos recursos, quando aplicável, e estes recursos devem declarar-se cacheáveis. Cache pode ser implementado no lado do servidor ou cliente.O caching bem gerido elimina parcialmente ou completamente algumas interações cliente-servidor, melhorando ainda mais a escalabilidade e o desempenho.

sistema em camadas

o descanso permite-lhe usar uma arquitectura de sistema em camadas onde implanta as APIs no servidor a, e armazena dados no servidor B e autentica pedidos no servidor C, por exemplo. Um cliente não pode normalmente dizer se está conectado diretamente ao servidor final ou a um intermediário ao longo do caminho.

código a pedido (opcional)

bem, esta restrição é opcional. Na maioria das vezes, você estará enviando as representações estáticas de recursos na forma de XML ou JSON. Mas quando você precisa, você está livre para return executable code para suportar uma parte de sua aplicação, por exemplo, os clientes podem ligar para sua API para obter um código de renderização de widget UI. É permitido.

todas as restrições acima ajudam a construir uma API verdadeiramente repousante, e você deve segui-las. Ainda assim, às vezes, você pode se encontrar violando uma ou duas restrições. Não se preocupe, você ainda está fazendo uma API repousante – mas não “verdadeiramente repousante.”

observe que todas as restrições acima estão mais intimamente relacionadas com a WWW (a web). Usando APIs RESTful, você pode fazer a mesma coisa com seus serviços web o que você faz às páginas web.

este artigo foi útil?

Sim
Não

Deixe uma resposta

O seu endereço de email não será publicado.

More: