Continuando o post Hypermedia APIs – Parte I, vou especificar melhor a Hypermedia e suas características.
Mike Amundsen um dos principais nomes relacionados a APIs e Hypermedia, introduziu na comunidade o termo “H Factors” e o conhecido Hypermedia affordances.
“H Factors” são medidas utilizadas para identificar um tipo de media que uma mensagem contém e qual o nível de hypermedia suportado por aquele tipo.

Utilizado para comparar diferentes mensagens, e encontrar o melhor tipo de media para implementá-lo.
Os H Factors são divididos em:

LINK >

  • Outbound Links (LO): um link que te direciona para algum lugar;
  • Embedded Links (LE): um link que busca alguma coisa e inclui no atual contexto;
  • Templated Links (LT): um link que funciona como um template para um comportamento;
  • Idempotent Links (LI): um link para uma operação idempotente;
  • Non-Idempotent Links (LN): um link para uma operação que não-idempotente;

CONTROL >

  • Request Controls (CR): um controle de requisição de uma referência, normalmente restritivo;
  • Updatae Controls (CU): um controle utilizado para atualizar uma referência;
  • Method Controls (CM): um controle que indica qual método será invocado para uma referência
  • Link Controls (CL): um controle que indica o tipo de uma referência.

Uma coleção desses fatores formam um tipo de media (Media type). Os H Factors representam os affordances de um media type.
Affordances é um termo criado por James Gibson em 1977 que define como um ambiente demonstra todas as ações possíveis. Ele nos fornece um pequeno exemplo, você está em um campo aberto e começa a chover, então você observa uma árvore e uma casa, esta é a maneira como você percebe todas as ações possíveis disponíveis para aquele ambiente.
Em sua tese “Architetural Styles and the Design of Network-based Software” de 2001, Roy T. Fielding, diz: “…information becomes affordance through which the user obtains choices and selects actions…“, demonstrando a forte relação de REST com Hypermedia.
Segundo padrões catalogados através do REST Patterns, os tipos de Hypermedia são baseados pela capacidade de exercer o CRUD e podem ser categorizados assim:

  • – R Type descreve como um client pode ler o recurso;
  • – RUD Type descreve como ler, atualizar e deletar recursos;
  • – CR Type descreve como criar e ler recursos;
  • – O tipo +COD Extesion é utilizado quando o tipo possui mais de uma capacidade citada acima, por isso ele é categorizado como uma extensão.

Entender os diferentes tipos de Hypermedia e saber utilizá-los, é vital para o sucesso do seu projeto.
Uma dica, pense sempre na abstração do seu problema, provendo possibilidades diferentes para que sua API possa ser extensível e forneça possibilidades de combinações entre os próprios recursos da API.
Os tipos de media podem variar de acordo com a necessidade do desenvolvedor, as mensagens podem ser tanto em formato HTML com links e forms ou em Atom. Existem outros formatos, mas todos seguem o mesmo web standard e possuem algumas diferenças técnicas que não são relevantes ao escopo desse post.
No próximo post, vamos definir uma media para representar um recurso de um domínio específico.
Não deixe de nos acompanhar.
 

Autor

Wilson Souza é Gerente de Marketing da Bluesoft. Formado e pós Graduado pela Instituição Mackenzie, possui também MBA pela FGV. Wilson tem mais de 10 anos de experiência na área de Relacionamento e Marketing, atuando em diversas áreas e segmentos do mercado.

Deixe aqui o seu comentário