Ao projetar um serviço da Web RESTful, a API deve ser projetada para funcionar com o ID de Strings para valores passados entre o servidor?
Aqui está um exemplo: digamos que eu tenho um recurso Employee, que possui atributos de status e de gênero. No banco de dados, Status e Gênero, separa as tabelas e, assim, separa o objeto Domínio, cada um com seu próprio identificador.
Digamos que a solicitação do cliente / funcionário / 1. Não servidor pode retornar algo como estes ....
Caso 1:
{
"id": 1,
"firstName": "Jane",
"lastName": "Doe",
"active": true,
"gender": {
"id": 1,
"gender": "FEMALE"
},
"status": {
"id": 3,
"status": "FULL_TIME"
}
}
Caso 2:
{
"id": 1,
"firstName": "Jane",
"lastName": "Doe",
"active": true,
"gender": "FEMALE",
"status": "FULL_TIME"
}
Caso 3:
{
"id": 1,
"firstName": "Jane",
"lastName": "Doe",
"active": true,
"genderId": 1,
"statusId": 3
}
O caso 3 parece fazer menos sentido, pois o cliente não tem idéia do que é genderId 1, a menos que ele se vire e faça outra chamada ao servidor para obter esses dados.
No entanto, agora digamos que o cliente esteja atualizando o usuário através de:
PUT /employee/1
A carga útil da solicitação deve usar os IDs ou uma string? De qualquer forma, o back-end precisa procurá-los para garantir que sejam válidos, mas é melhor trabalhar com IDs sobre Strings.