2014-11-03 5 views
1

저는 Richardson "RESTful Web Services"라는 훌륭한 책을 통해 현재 REST 사례를 배우고 있습니다. 리차드슨의 성숙도 모델을 따르는 REST API를 디자인하고 싶습니다. 특히 HATEOAS라는 레벨 3은 처리하기가 가장 복잡합니다.REST : 형식, 링크 및 하이퍼 미디어 형식

첫째, 링크와 양식 간의 다른 의미를 이해하지 못합니까? (하이퍼 미디어와 관련하여 HTML 설명을 알고 있습니다 ..). "링크는 GET 메서드"와 "폼은 GET/POST/PUT 메서드"에 불과합니까?

EDIT1

: 나는 지점을 가지고 : 형태는 URI를 구성하는 신청서 수와 GET 방식을 사용하거나 PUT/POST 방법에 대한 자원 형태이 될 수 있습니다 (더 많거나 적은 내가 무엇을 요구). 내가 틀렸다면 나를 정정하십시오. OPTIONS 메소드를 사용하는 클라이언트가 링크를주의 깊게 사용하여 어떻게 사용할 수 있는지 알고 있어야합니다.

HATEOAS를 준수하려면 하이퍼 미디어 형식을 선택해야합니다 ... Siren, HAL, Collection + JSON, JSON-LD, Hydra 등과 같이 여러 형식으로 존재한다는 것을 알고 있습니다. .. 글쎄, 어느 것을 사용해야할지 모르겠다.

리차드슨의 책에서 그는 브라우저에서 API를 테스트하는 것이 가장 좋은 점 중 하나 인 xHTML을 사용합니다. 그러나 xHTML은 무거워 보입니다. 아마도 좀 더 가벼운 것을 선호 하겠지만 최근의 하이퍼 미디어 형식 (사이렌, HAL 등)은 프로그래머블 클라이언트없이 테스트하기에는 너무 최근의 복잡한 것일 수 있습니다.

+0

하나의 분명한 질문을 제시해 주실 수 있습니까? 당신이 묻고있는 것이 명확하지 않습니다. –

+0

그것은 모두 하이퍼 미디어에 관한 것입니다 : 2 가지 개념 (링크와 형태)의 차이와 어떤 하이퍼 미디어 형식을 사용해야합니까. 더 명확 할 수는 없습니다. – Poke

+1

HAL & Siren 모두 매우 훌륭한 브라우저를 보유하고 있습니다. http://haltalk.herokuapp.com/explorer/browser.html#/ & http://siren-browser.herokuapp.com/ –

답변

2

저는 API에 대한 사이렌 형식을 시도해 보길 강력히 권장합니다. 에있는 주석 중 하나에서 올바르게 언급했듯이 훌륭한 브라우저를 가지고 있지만 ... 그 중 하나는 제대로 지원되지 않습니다 (github 저장소에서 볼 수 있습니다).

그래서 당신이 언급 한 첫 번째에 기반 this one를 사용해야하지만, 같은 몇 가지 엑스트라가 있습니다 & 링크 및 양식의 차이에 관해서는 (다른 사람의 사이에서) 중첩 된 개체에 대한 작업을

지원 핸들링 좋은 오류 ... 글쎄 내 5 센트는 서버에 매개 변수를 보내야하는 POST, PUT, PATCH, GET 작업을 위해 클라이언트와 액션 (사이렌 형식으로 말하기)의 입력 매개 변수가 필요없는 GET 요청에 대한 링크를 사용한다는 것입니다.

자, 이렇게 말할 수 있습니다. "하지만이 링크 http://testsite.com/api/v1/users?param1=value1"을 가질 수 있으며 여전히 매개 변수를 전달합니다. 당신은 맞습니다,하지만 맞아요, 어떻게 클라이언트가이 매개 변수를 전달할 수 있을까요?

그래서 '받아 들일 수있는 입력란'을 설명하는 '입력란'이라는 키가있는 작업이 있습니다.

하이퍼 미디어 API를 즐기십시오!

+0

사이렌이 안정 버전에 도달하는지 궁금합니다. 다른 한편으로, 나는 Hydra가 W3C에 의해 밀어 올려지고있는 것을 보았 기 때문에 ... 그러나 그것은 너무 최근 인 것 같다? – Poke

+1

죄송합니다. CollectionsJSON/HAL/Siren을 비교하는 유용한 링크를 찾으십시오 : https://github.com/kevinswiber/siren/issues/15; 사이렌은 내 경우에는 괜찮아 보인다! – Poke