Você está projetando uma API REST para um sistema de vendas. Cada cliente pode possuir vários pedidos. Qual das URIs abaixo segue as boas práticas de modelagem de recursos e hierarquia em REST para listar todos os pedidos de um cliente com id 123?
Questão
Você está projetando uma API REST para um sistema de vendas. Cada cliente pode possuir vários pedidos. Qual das URIs abaixo segue as boas práticas de modelagem de recursos e hierarquia em REST para listar todos os pedidos de um cliente com id 123?
Alternativas
/orders/customer/123
/orders?customerId=123
/customers/123/orders
/customers/orders/123
/customer/123/order
Explicação
Para listar todos os pedidos de um cliente específico em uma API REST, a boa prática é representar a relação hierárquica entre recursos na própria URI, usando sub-recurso.
- O recurso principal é customers (clientes).
- O cliente é identificado por /customers/123.
- Os pedidos pertencentes a esse cliente são um sub-recurso: /customers/123/orders.
As demais opções não seguem tão bem a modelagem REST:
- /orders/customer/123: mistura recurso com um “caminho de ação/atributo” (customer) no meio.
- /orders?customerId=123: pode ser válido como filtro, mas a questão pede boas práticas de hierarquia (sub-recurso é a forma mais clara para “pedidos de um cliente”).
- /customers/orders/123: hierarquia confusa (parece “pedido 123” dentro de “customers/orders”).
- /customer/123/order: usa singular e sugere um único pedido, não a coleção.
Alternativa correta: (C).