2017-02-22 3 views
2

이 질문은 RESTful design: when to use sub-resources?에 게시 된 simillar와 관련이 있지만이 사례는 언급하지 않습니다.Rest API에서 하위 리소스를 사용하는 경우는 언제입니까?

나는이 예제를 가지고

/cars/{carid} 
{ 
"id": 1, 
"brand": "something" 
"engine": 
{ 
"horse_power": 100, 
"type": "hybrid" 
} 
} 

이 예제이

/cars/{carid} 
{ 
"id": 1, 
"brand": "something" 
} 

/cars/{carid}/engine 
"engine": 
{ 
"horse_power": 100, 
"type": "hybrid" 
} 

답변

2

어쩌면 분할처럼 보이도록 하위 자원으로 분할 할 필요가있는 경우 나 결정하는 데 도움 수있는 적절한 추론을 할 것입니다 무엇 주 자원이 여러 배열 및 기타 관련 엔티티가있는 복합 엔티티 인 경우 여러 하위 자원으로의 주요 자원을 이해할 수 있습니다.

그러나 성능 문제가 염려되는 경우 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" 
} 
+0

하지만이 또한 PUT의 /cars/1/HTTP/1.1 호스트로 가능한 것 : example.org 내용 - 유형 : 응용 프로그램/JSON { "horse_power": 110, "유형": "ELETRIC" } 다른 리소스 다음 청소기 코드와 적은 마크 업을 분할 할 때 – mko

+0

은 좀 더 휴식 관련 혜택을 찾고 있었다. – mko

+0

@mko'PUT/cars/1'을 수행 할 때, 대상 자원 (이 경우, ID가 '1'인 차량)을 요청 페이로드로 전송 된 표현으로 대체해야합니다. –

관련 문제