REST — Controller ou Resources
Fala galera, e ai blz ?
Bora dividir conhecimento ? Afinal, quando a gente divide conhecimento a gente ta multiplicando. Então bora lá.
Este artigo abordará a decisão de definir o uso de controller ou resources com base na dissertação de Roy Fielding.
Quando pensamos sobre o design de nossas APIs, a estruta dos pacotes e os nomes dos artefatos são muito importantes. Pensando nisso, é muito comum vermos o uso da nomeclatura “controller” para pacotes e artefatos que vão expor os “endpoints” de nossas APIs. Acredito que isso ocorreu devido a forte cultura do MVC, bem como a força do framework Spring e seus estereotypes. Mas se estamos trabalhando com REST e pretendemos seguir o que foi proposto por seu criador Roy Fielding e exposto em sua dissertação que deu origem ao REST em 2000, podemos entender que estamos falando na verdade de REST aplicado a URIs, como ele mesmo trata no capitulo 6 de sua dissertação “REST Applied to URI”.
“Uniform Resource Identifiers (URI) are both the simplest element of the Web architecture and the most important. URI have been known by many names: WWW addresses, Universal Document Identifiers, Universal Resource Identifiers [15], and finally the combination of Uniform Resource Locators (URL) [17] and Names (URN) [124]. Aside from its name, the URI syntax has remained relatively unchanged since 1992. However, the specification of Web addresses also defines the scope and semantics of what we mean by resource, which has changed since the early Web architecture. REST was used to define the term resource for the URI standard [21], as well as the overall semantics of the generic interface for manipulating resources via their representations.”.
Roy Fielding
Acima podemos ver claramente a visão do autor quando diz “REST was used to define the term resource for the URI standard”, ou seja, REST é adotado para definir o termo resource para a URI. Quando falamos do pacote “Controller”, estamos na verdade falando do pacote Resources pois é nele que iremos criar os artefatos que expoem nossas “URIs” ou seja, nossos resources.
“as well as the overall semantics of the generic interface for manipulating resources via their representations.”
É neste ponto que baseado na dissertação de Roy Fielding, eu me posiciono na direção de adotar a nomeclatura Resources para o pacote e por consequência, aderir a terminação dos artefatos desse pacote a mesma nomeclatura.
Concluo então com uma exemplificação de antes e depois:
Antes de conhecer e entender a dissertação de Roy Fielding: UserController
Depois de conhecer e entender a dissertação de Roy Fielding: UserResources
Se nos aprofundarmos na dissertação de Roy Fielding, tem muito material que vai desconstruir mitos e lendas que vemos hoje em dia, mas isso são assuntos para outros artigos.
Vlw, flw e tmj \m/.