1. Restful – Part 2
Recursos
Um recurso é nada exposta pelo sistema que tem uma identidade. Recursos
oferecem uma maneira de adaptar o domínio de aplicação aos clientes web.
Uma imagem, uma planilha, um serviço ou uma coleção de outros recursos
são alguns exemplos de recursos. Os recursos são obtidos ou enviar usando
uma certa representação (XML, JSON, etc.). Nós lidamos com
representações de recursos, e não com os próprios recursos, seguindo a
ideia de "Pass-by-value". Após a definição REST anterior, os recursos
representam os documentos que estão sendo transferidos através da rede
para começar o trabalho feito. estado de recursos é uma preocupação do
lado do servidor, uma vez que representa o estado de domínio, clientes só
buscar ou enviar representações de recursos para o progresso do estado do
aplicativo. Por outro lado, o estado da aplicação é uma preocupação do
lado do cliente, uma vez que representa o progresso para um objectivo
particular aplicação. Os recursos devem ser nomeados como substantivos,
pois representam conceitos no domínio de um sistema particular e são
identificados usando URIs.
URIs (Uniform Resource Identifier)
URIs diferenciar um recurso de outro. Para acessar e manipular um
recurso, ele precisa ter pelo menos um endereço. Eles são compostos por
uma série protocolo + + caminho. Os clientes não devem ser acoplados a
URIs específicos de recursos como eles podem ser alterados a critério do
servidor. Este é o lugar onde hipermídia tem as maiores vantagens, uma
vez que oferece uma maneira de separar clientes de URIs específicos e
adicionar semântica para o protocolo de aplicação.
Hipermídia
Hipermídia informa o cliente sobre o que ele pode fazer em seguida,
através do uso de controles de hipermídia (links e formas) nas respostas, eo
URI específica para fazê-lo. O formato hipermídia concreto para uma
determinada aplicação é definida no tipo de aplicativo Media. elos
hipermídia são compostas por um atributo href que especifica o URI para
acessar o recurso vinculado e um atributo rel que define o significado da
relação, portanto, acrescentando semântica para as transições de estado na
aplicação. O uso de links permite que o servidor para anunciar novos
recursos, incluindo novas ligações nas respostas sem quebrar os clientes
existentes. Enquanto o servidor manter ligações previamente definidas nas
2. respostas, os clientes seriam capazes de segui-los assim como eles eram
antes do novo estado foi adicionado. Os clientes que só necessitam de ser
atualizadas se eles precisam acessar o novo estado. Outra vantagem
hipermídia é que ele introduz descoberta, fornecendo uma maneira de fazer
um protocolo de descoberta e autodocumentado.
Os clientes começam a interagir com o aplicativo por meio de uma URL
fixa, e a partir daí todas as outras ações acontecem pelo cliente seguindo os
links , formatado com o tipo de mídia e fornecido pelo servidor em cada
resposta.
tipos de mídia e links definir o contrato entre o servidor de aplicativos eo
cliente. O cliente interage com o sistema , navegando o estado do aplicativo
utilizando as ligações . Isto é o que HATEOAS ( Hipermídia como motor
do estado do aplicativo ) realmente significa.
Hipermedia ( para além dos elementos já definidos ) é o que significa
REST realmente .
Abaixo um exemplo de um requisição Rest para retornar uma validação
Aoath do salesforce:
<?xml version="1.0" encoding="UTF-8"?>
<mule xmlns:http="http://www.mulesoft.org/schema/mule/http"
xmlns:tracking="http://www.mulesoft.org/schema/mule/ee/trackin
g" xmlns="http://www.mulesoft.org/schema/mule/core"
xmlns:doc="http://www.mulesoft.org/schema/mule/documentation"
xmlns:spring="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.mulesoft.org/schema/mule/http
http://www.mulesoft.org/schema/mule/http/current/mule-http.xsd
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-current.xsd
http://www.mulesoft.org/schema/mule/core
http://www.mulesoft.org/schema/mule/core/current/mule.xsd
http://www.mulesoft.org/schema/mule/ee/tracking
http://www.mulesoft.org/schema/mule/ee/tracking/current/mule-tracking-
ee.xsd">
<sub-flow name="getAuthorizationToken">
<http:request config-ref="HTTP_Request_Configuration"
path="/services/oauth2/token" method="POST"
doc:name="RequestAuthorization">