2017-01-25 3 views
0

서버에서 엔터티에 대한 계산을 요청할 때 올바른 규칙을 사용하는 데 관심이 있습니다. 즉, 특정 엔터티가 관련되었지만 데이터가 반환되지 않습니다. 대신 엔터티를 기반으로 한 계산이 반환됩니다.REST 리소스 계산 결과보기

예를 들어 오프셋/시간대 값이 다른 여러 시계를 저장하는 사이트를 예로 들자. 사이트의 목적은 아날로그 시계의 이미지를 적절한 방향을 가리키는 손으로 제시하는 것입니다.

나는이 할 수있을 것으로 기대 좋은 규칙을 것입니다 사용 :

POST /clocks 
{ 
    "offsetHours": 5 
} 

을 그리고 난이 응답을받을 것이다 :

201 (Created) 
{ 
    "id": "fe884d5e", 
    "offsetHours": 5 
} 

지금 내가 그 시계 개체를 검색 할 수 있도록 기대를 :

GET /clocks/fe884d5e 

응답하는 :

200 (OK) 
{ 
    "id": "fe884d5e", 
    "offsetHours": 5 
} 

이것은 지금까지 모두 괜찮습니다. 그러나 내가 액세스 할 것으로 예상되는 다른 두 개의 끝점이 있습니다. 첫 번째 것은 시계의 오프셋에 대해 계산 된 현재 시간을 반환합니다. 두 번째는 시계의 현재 시간을 기반으로 아날로그 시계를 표시하는 이미지 데이터를 반환합니다.

제 질문은 다음과 같습니다. 이러한 데이터 항목에 대한 GET 요청은 어떻게 표시되어야합니까? 또는 엔티티의 계산 된 뷰를 처리 할 때 컨벤션이 느슨합니까?

답변

0

그러나 내가 액세스 할 것으로 예상되는 다른 두 개의 끝점이 있습니다. 첫 번째 것은 시계의 오프셋에 대해 계산 된 현재 시간을 반환합니다.

뭔가

GET /clocks/fe884d53/localTime 

처럼 두번째 시계의 현재 시간에 따라 아날로그 시계를 표시하는 화상 데이터를 반환한다.

뭔가

GET /clocks/fe884d5e/localTime/analogClock.jpg 

또는

GET /clocks/fe884d5e/analogClock.jpg 

여기서 핵심 아이디어는 이러한 정보 자원 시계의 설명 자체가 인 것을 정확히 같은 방식으로, 있다는 것입니다 같은 정보 자원.

소비자의 관점에서 표현은 단지 하나의 문서 일뿐입니다. 문서가 새로 생성되었거나 문서 저장소에서 복사되었거나 웹 캐시에서 빠져 나갔는지 알 수있는 방법이 없어야합니다.

계산이 있다는 사실은 API 뒤에 숨겨진 구현 일뿐입니다.

구현 세부 정보를 공유하는 다른 리소스라는 생각을 분명히 한 후에 나머지 작업은 자전거 끄기 일뿐입니다. 라우팅이 올바른 구현을 쉽게 찾을 수 있습니까? 경로 세그먼트 및 쿼리의 비 계층 적 파트는 맞춤법이 로컬 코딩 표준과 일치하는 "리소스"처럼 충분히 보이는지 여부 등).

+0

멋지다. 내 질문은 클라이언트가 일부보기가 계산되고 다른보기가 계산되지 않는다는 사실을 인식해야하는지 여부와 관련이 있었다고 생각한다. –