Peut-être que le fractionnement la ressource principale en sous-ressources multiples a du sens si la ressource principale est une entité complexe avec de nombreux tableaux et d'autres entités apparentées. Toutefois, si vous êtes préoccupé par les problèmes de performances, gardez à l'esprit que premature optimization is the root of all evil. Vous ne devriez pas optimiser jusqu'à ce que vous ayez un problème de performance et vous avez prouvé que le problème de performance provient de l'envoi d'une grande représentation des ressources.
Pour la situation mentionnée dans la question, soutient un sous-ressources comme /cars/{id}/engine
pourrait être utile lors du remplacement du moteur tout de la voiture, comme suit:
PUT /cars/1/engine HTTP/1.1
Host: example.org
Content-Type: application/json
{
"horse_power" : 110,
"type" : "eletric"
}
HTTP/1.1 204 No Content
Lorsque vous demandez /cars/1
, une représentation complète de la voiture, y compris le moteur, serait retourné:
GET /cars/1 HTTP/1.1
Host: example.org
Accept: application/json
HTTP/1.1 200 OK
Content-Type: application/json
{
"id" : 1,
"brand" : "something",
"engine" : {
"horse_power" : 110,
"type" : "eletric"
}
}
Pour retourner une représentation partielle de la ressource, prenez en compte les approches mentionnées dans ce answer.
Lors d'une demande /cars/1/engine
, la représentation du moteur serait renvoyé:
GET /cars/1/engine HTTP/1.1
Host: example.org
Accept: application/json
HTTP/1.1 200 OK
Content-Type: application/json
{
"horse_power" : 110,
"type" : "eletric"
}
Mais ce serait aussi possible avec PUT /cars/1/HTTP/1.1 Hôte: example.org contenu -type: application/json { "horse_power": "type" 110, : "eletric" } – mko
je cherchais plus de repos avantages liés à d'autres lors de la répartition des ressources de code alors plus propre et moins de balisage. – mko
@mko Lorsque vous exécutez 'PUT/cars/1', vous devez remplacer la ressource cible (dans ce cas, la voiture portant l'ID '1') avec la représentation envoyée dans la charge utile de la requête. –