Middle
O que é o modelo orientado a recursos (ROM)?
sobes.tech IA
Resposta da IA
O Modelo Orientado a Recursos (Resourse-Oriented Model) é uma abordagem para projetar APIs onde as entidades principais do sistema são representadas como recursos, com os quais podem ser realizadas operações padrão, como criar, ler, atualizar e eliminar (CRUD), usando métodos HTTP padrão.
Princípios-chave:
- Recursos: Os componentes principais do sistema, que têm um identificador único (URI). Por exemplo, "utilizador", "pedido", "produto".
- Interface uniforme: Uso de métodos HTTP padrão (GET, POST, PUT, PATCH, DELETE) para realizar operações sobre os recursos.
- Identificação de recursos: Cada recurso possui um URI único.
- Representações: Os recursos podem ter diferentes representações (por exemplo, JSON, XML), que são acordadas entre cliente e servidor.
- Ligações entre recursos (Hypermedia): Os recursos podem conter links para recursos relacionados, permitindo ao cliente navegar pela API.
Exemplo:
// Obter lista de utilizadores
GET /users
// Obter um utilizador específico
GET /users/123
// Criar um novo utilizador
POST /users
Content-Type: application/json
{
"name": "Ivan",
"email": "ivan@example.com"
}
// Atualizar utilizador
PUT /users/123
Content-Type: application/json
{
"name": "Ivan Petrov"
}
// Atualização parcial do utilizador
PATCH /users/123
Content-Type: application/json
{
"email": "ivan.petrov@example.com"
}
// Eliminar utilizador
DELETE /users/123
Vantagens:
- Simplicidade e padronização: Fácil de entender e usar graças ao uso de tecnologias web padrão.
- Escalabilidade: Adequado para construir sistemas distribuídos.
- Cacheamento: Possibilidade de cachear as representações dos recursos para melhorar o desempenho.
- Independência do cliente e do servidor: Separação entre a apresentação de dados e seu armazenamento e processamento.
Desvantagens:
- Pode ser ineficiente para operações complexas que não se encaixam no CRUD.
- Nem sempre é adequado para serviços com estado (stateful).
O ROM é a base para construir APIs RESTful.