2016-06-20 10 views
0

API 링크의 다음 구조가 HATEOAS와 호환되는지 궁금합니다.이 API 구조는 HATEOAS와 호환 가능합니까?

특히 나는 끝 점을 만들지 모르겠다. 사용자가 거기에서 그룹을 만들 수 있기 때문에 엔트리 레벨에 있어야 하나/그룹에 넣어도 괜찮습니까?

나머지에 대해 어떻게 생각하십니까? 또한 HAL과 호환되어야합니다.

이 루트 :

{ 
    "_links": { 
    "self": { 
     "href": "/api/root" 
    }, 
    "api:group-add": { 
     "href": "http://apiname:port/api/group" 
    }, 
    "api:group-search": { 
     "href": "http://apiname:port/api/group?pageNumber={pageNumber}&pageSize={pageSize}&sort={sort}" 
    }, 
    "api:group-by-id": { 
     "href": "http://apiname:port/api/group/id" (OR "href": "http://apiname:port/api/group?id={id}") 
    } 
    } 
} 

추가 기능은 단순히에 POST 것 HAL 브라우저로이 같이 보일 것이다, 그래서

/groups 
    /create 
    /detail/{groupId} 
    /update 
    /delete 
    /items 
    /search{?page,size,sort} 
+2

왜 URI에 조작 ('create','detail','update','delete','search')을 넣으 시나요? 그것은 REST가 아니라 RPC입니다. –

+1

그냥 그룹/그룹을 만들려면 실현 PUT/세부/{groupID} - 그룹을 업데이트하려면 삭제/세부/{groupID} - 그룹을 삭제하려면 –

+1

그래, 그게 좋을 것이다. –

답변

1

HATEOAS은 (Richardson's Maturity Model level 3 참조), 모든 링크에 관한 것입니다 끝점을 찾은 다음 2 가지 방법을 사용할 수 있습니다.

다음
{ 
    "Id" : 1, 
    "Name" : "test", 
    "_links": { 
    "self": { 
     "href": "/api/group/1" (OR "/api/group?id=1") 
    }, 
    "edit": { 
     "href": "http://apiname:port/api/group/1" 
    }, 
    "api:delete": { 
     "href": "http://apiname:port/api/group/1" 
    }, 
    "api:items-query": { 
     "href": "http://apiname:port/api/bonus?groupId=1" 
    } 
    } 
} 

, 편집은 단순히 PUT 것, 그리고 당신은 볼 (REST의 레벨 2는 DELETE가 필요합니다 특정 그룹에 드릴 다운하면 다음

(1 말) 그 같은 링크에서), 항목에 관해서는, 그들이 단지 재산이거나 다른 종점 일 때 당신은 아마 가장 잘 압니다; 그룹을 검색하는 것과 동일한 호출에서 리턴되도록이를 포함시킬 수도 있습니다.