Al diseñar un servicio web RESTful, ¿se debe diseñar la API para que funcione la ID de las cadenas de valores que se transmiten de un lado a otro entre el servidor?
Aquí hay un ejemplo: Digamos que tengo un recurso de empleado, que tiene un estado y atributos de género. En la base de datos Estado y género y tablas separadas y, por lo tanto, objetos de dominio separados, cada uno con su propio identificador.
Digamos la solicitud del cliente / empleado / 1. El servidor podría devolver algo como esto ...
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
}
El caso 3 parece tener menos sentido ya que el cliente no tiene idea de qué género es el Id. 1 a menos que se dé la vuelta y realice otra llamada al servidor para obtener esos datos.
Sin embargo, ahora digamos que el cliente está actualizando al usuario a través de:
PUT /employee/1
¿Debería la solicitud Payload usar los identificadores o una cadena? De cualquier manera, el back-end tiene que buscarlos para asegurarse de que sean válidos, pero es mejor trabajar con ID sobre Strings.