Quando si progetta un servizio Web RESTful, l'API deve essere progettata per funzionare ID per le stringhe per i valori passati avanti e indietro tra il server?
Ecco un esempio: diciamo che ho una risorsa Employee, che ha uno status e attributi di genere. Nel database Stato e Sesso e tabelle separate e quindi separato oggetto Dominio, ciascuno con il proprio identificativo.
Diciamo che la richiesta / dipendente del cliente / 1. Il server potrebbe restituire qualcosa del genere ....
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
}
Il caso 3 sembra aver senso, dal momento che il cliente non ha idea di cosa sia genderId 1 a meno che non si rigiri e faccia un'altra chiamata al server per ottenere quei dati.
Tuttavia ora diciamo che il client sta aggiornando l'utente tramite:
PUT /employee/1
La richiesta Payload dovrebbe usare gli id o una stringa? In entrambi i casi, il back-end deve cercarli per assicurarsi che siano validi, ma è meglio lavorare con gli ID su Strings.