RESTful 디자인을 전체 웹 사이트에 적용 하시겠습니까?


11

이 모든 것이 아주 새로워 질 수도 있지만 완전히 RESTful 한 웹 사이트를 디자인하는 데 집중하고 있습니다. 나는 사용자, 사진, 블로그 게시물 등과 같은 것들에 RESTful 디자인을 적용하는 것을 "객체"처럼 생각한다는 것을 이해합니다.

그러나 "회사 소개"페이지는 어떤가요? 어떤 종류의 자원입니까? RESTful 한 단어 의미의 자원일까요? 또한 URL "http://www.example.com/"으로 이동하면 어떤 리소스를 요청합니까? 인덱스 리소스?


나는 약간의 설명이 필요하다고 생각합니다. 최종 목표는 무엇입니까? 편안한 디자인이 필요합니다. 방정식에서 편안하게, 당신은 무엇을 만족 시키려고 노력하고 있습니까?
Jonathan Kaufman

1
최종 목표는 완전한 웹 사이트입니다. 편안한 디자인을 중심으로 웹 사이트를 구성하는 것은 웹이 작동하는 방식에 따라 의미가있는 것 같습니다. 정보 나 연락처 페이지와 같이 리소스처럼 보이지 않는 것에 이러한 종류의 디자인을 적용하는 방법을 잘 모르겠습니다.
TaylorOtwell

답변:


6

내가 보는 가장 일반적인 RESTful 웹 사이트 리소스 패턴 은 URI에 를 추가하는 것입니다 .

/ resourcetype / identifier [/ view ] [/ page] [? filterparams]

보기 가 없으면 기본보기를 제공하기 만하면됩니다. 귀하의 경우 :

  • / — 요청은 최상위 리소스 인 웹 사이트 example.com기본보기 를 반환합니다 .
  • / aboutus — 최상위 리소스의 "About us"보기 또는 최상위 CMS 범위의 리소스에 대한 aboutus명명 된 식별자 일 수도 있습니다 . *
  • / customers / 1 / aboutus —이 요청은 고객 1 범위의 "회사 정보"보기를 나타냅니다 .

즉, 더 나은 의미를 위해 조금 퍼지하는 것이 가장 좋습니다. 예를 들어, StackOverflow는 질문에 RESTful / questions / [id] 를 사용하지만 질문하기 페이지는 / questions / ask 로 RESTful 하지는 않지만 (자원 ask이 아님 questions) 단순한 필사자를 사용하는 것이 좋습니다.


* CMS의 최상위 수준에서는 리소스 유형 이 중복되기 때문에 항상 제거되는 것은 아닙니다.


10

RESTful 디자인 그 자체는 웹을 균일하게 프로그래밍 할 수있는 표준을 제공하기위한 것입니다. 휴먼 웹 사이트 전체를 순수한 REST 의미론으로 묶는 것이 항상 적절하거나 유용하지는 않습니다.

자원이있는 경우 해당 표현을 고려하는 것이 유용합니다. 상태 비 저장과 같은 REST의 다른 설계 원칙과 이들이 웹 사이트의 성능 및 유용성에 미치는 영향을 고려해야합니다. 그러나 REST는 목표가 아니라 도구라는 것을 기억하십시오. 끝이 아니라 수단입니다.

목적과 이점을 이해 한 후 유용한 곳에 RESTful 의미 체계를 사용 하고 사이트가 완벽하게 RESTful하지 않은 경우 땀을 흘리지 마십시오. 어떤 사소한 사소한 사이트도 거의 불가능합니다.

TL; DR : REST는 도구입니다. 언제 어디서나 유용하지만 사용하지 마십시오.


2
+1 URL보다 휴식이 더 많습니다.
Josh Noe

Ajax, REST 및 REST 사이트에 대한 외부 링크는 악몽 일 수 있습니다. 답변 주셔서 감사합니다.
johnny

4

그러나 "회사 소개"페이지는 어떻습니까? [?] 어떤 종류의 리소스입니까?

복잡한. 구성 요소, 조각 또는 구조가있는 리소스에는 문제가 없습니다.

리소스는 "관계형 데이터베이스 행"이나 다른 원자적인 것이 아닙니다. 그들은 자원입니다.

리소스가 더 크고 구조화 될 수 있기 때문에 문서 지향 데이터베이스는이를보다 정교하게 처리합니다.

RESTful 한 단어 의미의 자원일까요?

예.

또한 URL "http://www.example.com/"으로 이동하면 어떤 리소스를 요청합니까?

아니.

"aboutus"리소스를 요구하고 있습니다. 리소스가 싱글 톤일 수는 있지만 (홀수) 가능합니다. ID가없고 "목록"이 아닙니다.

http://www.example.com/aboutus/?format=xml

조각과 부품이 많은 복잡한 XML 문서를 반환합니다. 아무 문제가 없습니다.

인덱스 리소스?

"RESTful"의미로 많은 것을 의미하지는 않습니다. "색인"페이지는 사람들을위한 것입니다. RESTful API를 사용하는 애플리케이션은 특정 종류의 자원을 요청하도록 설계되었습니다.


4
+1 나는 당신의 대답에서 중요한 점을 애타게하고 싶습니다 : REST는 프로그램 가능한 패러다임입니다. 반드시 인간 소비를위한 것은 아닙니다.
Rein Henrichs

1

내 견해를 백엔드와 독립적으로 유지하려고합니다. 백엔드에 아코디언, 탐색 표시 줄 및 본문과 관련된 기타 개체와 같은 리소스를 요청할 수 있습니다. 그러나 이러한 자원 표시 처리를 클라이언트 코드에 맡겨두면 요구 사항에 따라 렌더링됩니다.


1

"회사 소개"의 리소스는 ... Us :) er, You입니다. 당신이 알리고 싶은 당신의 속성에 대해 생각하고 그것들을 명사로 표현하십시오.

이러한 값은 데이터베이스에서 올 필요는 없습니다. 아마도 문자열 값이 많을 수도 있고 구성에서 나올 수도 있고 클래스에서 하드 코딩 될 수도 있습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.