Sobes.tech
Middle+

Fale sobre a regra de interface uniforme (Uniform Interface).

sobes.tech IA

Resposta da IA

A Regra de Interface Uniforme é uma das seis restrições arquiteturais do REST. Ela prescreve que o sistema utilize uma abordagem única e padronizada para a interação entre cliente e servidor. Isto simplifica e separa a arquitetura, melhora a visibilidade e facilita o desenvolvimento independente do cliente e do servidor.

Componentes da Interface Uniforme:

  1. Identificação de recursos: Os recursos devem ser identificáveis de forma única (geralmente através de URI). É a base para uma interação padronizada. Exemplo: /usuarios/123, /produtos/ABC.
  2. Manipulação de recursos através de suas representações: O cliente recebe uma representação do recurso (por exemplo, em JSON ou XML), que contém informações suficientes para modificar ou eliminar o recurso no servidor. O estado do recurso no servidor pode ser alterado enviando a representação modificada.
  3. Mensagens auto-descritivas: Cada mensagem (requisição ou resposta) deve conter informações suficientes para ser completamente compreendida sem o contexto do estado do servidor ou outras requisições. Isto inclui metadados: tipo de conteúdo, informações de cache, links para outros recursos, etc.
    HTTP/1.1 200 OK
    Content-Type: application/json
    Cache-Control: max-age=3600
    
    {
      "name": "Exemplo de Utilizador",
      "links": [
        {
          "rel": "self",
          "href": "/usuarios/123"
        }
      ]
    }
    
  4. Hipermedia como o Motor do Estado da Aplicação (HATEOAS): Permite ao cliente navegar dinamicamente entre recursos, com base em links hipermédia fornecidos pelo servidor na resposta. O cliente não precisa conhecer todos os URI de antemão, apenas o ponto de entrada. O servidor guia o cliente através de ações e recursos disponíveis.
    {
      "orderId": "A123",
      "status": "em processamento",
      "links": [
        {
          "rel": "cancelar",
          "href": "/encomendas/A123/cancelar",
          "method": "POST"
        },
        {
          "rel": "self",
          "href": "/encomendas/A123"
        }
      ]
    }
    

Em vez de caminhos codificados rigidamente, o cliente descobre a possibilidade de cancelar uma encomenda pela presença e conteúdo do link com rel: "cancelar".

Uma interface uniforme é fundamental para a escalabilidade e evolução de sistemas RESTful, pois reduz o acoplamento entre componentes.