Um recurso é o que você está trabalhando. Por exemplo, se você possui uma API para trocar uma determinada lâmpada, o recurso é a própria lâmpada. Um recurso pode ser físico (por exemplo, lâmpada, pessoa) ou não físico (por exemplo, artigo, função, uma linha no banco de dados), um recurso pode ser primário (por exemplo, saldo) ou derivado (por exemplo, transação). Um recurso pode se referir a uma entidade específica (por exemplo, a quinta lâmpada instalada neste soquete), ou a uma função que é mapeada para entidade diferente em momentos diferentes (por exemplo, a lâmpada atualmente instalada, a lâmpada instalada em 5 de agosto de 2008) ou pode mapear para várias entidades (por exemplo, todas as lâmpadas da casa).
A representação de um recurso é a maneira como seu serviço comunica o estado do recurso, por exemplo, XML, JSON que representa o estado da lâmpada.
Na API REST, um recurso é identificado por um identificador uniforme (por exemplo, URI). Um único recurso pode ter várias representações. Na API REST HTTP, você normalmente indica a representação que deseja usar nos cabeçalhos HTTP Content-Type e Accept.
Uma das principais realizações na arquitetura do servidor cliente é que você não pode trazer o recurso para o cliente e não deve tentar fazê-lo como faz. Em vez disso, na API REST, você manipula remotamente um recurso transferindo representações do recurso. Pense assim: você não FedEx a lâmpada para que o cliente possa manipular a lâmpada diretamente, mas o serviço cria uma representação XML / JSON / protobuf / CSV da lâmpada e o cliente envia uma representação das manipulações pretendidas. O serviço manipula o estado real da lâmpada em nome do cliente ou rejeita a solicitação, digamos se o cliente não está autorizado a executar as operações na lâmpada. Isso pode parecer óbvio / dividir o cabelo, mas o importante a ser observado é que, como a representação não é o recurso em si,