Maybe расщеплению основной ресурс в несколько подресурсов имеет смысл, если основной ресурс является сложным объектом со многими массивами и другими связанными объектами.
Однако, если вас беспокоят проблемы с производительностью, имейте в виду, что premature optimization is the root of all evil. Вы не должны оптимизироваться до тех пор, пока у вас не возникнет проблема с производительностью, и вы доказали, что проблема с производительностью связана с отправкой большого количества ресурсов.
Для ситуации, указанной в вопросе, поддерживая суб-ресурс как /cars/{id}/engine
может быть полезным при замене всего двигателя автомобиля, следующим образом:
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
При запросе /cars/1
, будет возвращено полное представление о машине, включая двигатель,:
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"
}
}
Чтобы вернуть частичное представление ресурса, рассмотрите подходы, упомянутые в этом документе answer.
При запросе /cars/1/engine
, представление двигателя будет возвращено:
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"
}
Но это также возможно с PUT /cars/1/HTTP/1.1 Ведущий: example.org Содержание -Тип: применение/JSON { «horse_power»: 110, «типа»: «Eletric» } – mko
Я искал больше преимуществ, связанные с остальных при разделении других ресурсов, то чистый код и меньше разметки. – mko
@mko При выполнении 'PUT/cars/1' вы должны заменить целевой ресурс (в этой ситуации - автомобиль с идентификатором' 1') с представлением, отправленным в полезной нагрузке запроса. –