2010-05-19 3 views
14
나는 본질적으로 편안하고 디자인의 내 제한된 이해를 벗어나는 꽤 많은 페이지가있는 사이트에 일하고 있어요

: 라벨 작업/경로에 대한 좋은 시스템이 무엇 : 여기RESTful 디자인, CRUD 외의 페이지 이름 지정 방법은 무엇입니까?

Create, Read, Update, Delete, Show, List 

는 질문 페이지가 CRUD/show/list에 깔끔하게 빠지지 않는 경우? 일부 페이지에는 한 번에 여러 테이블에 대한 정보가 있습니다. 나는 그들이 로그온 한 후 일부 고객에게 '거점 기지'를 제공하는 사이트를 구축 중이다. 예를 들어,/customers/show/1과 같이해서는 안되므로 자신에 대한 정보를 제공하지 않습니다. 그것은 회사에 대한 정보를 가지고 있지만 사이트에서 다른 방식으로이를 수행하는 다른 페이지가 있습니다. 이런 상황에 처했을 때 당신은 무엇을합니까? 이 '재택 기지'는 고객에게 표시되며 주로 회사에 대한 정보를 포함합니다 (그러나 그렇게 특별하지는 않음).

두 번째 사례 : 고객과 회사간에 '매칭'테이블이 있습니다. 이러한 일치는 사이트의 다른 부분 (다른 레이아웃, 다른 CSS 시트, 다른 유형의 사용자 액세스 등)에서 완전히 다른 방식으로 액세스됩니다. 모든 것이 일치/표시 일 수는 없으며 다른 레이블을 지정하는 가장 좋은 방법은 무엇입니까?

정말 감사합니다. =)

+1

읽기 및 표시가 동일합니다. – Anurag

+3

HTTP를 통한 REST는 GET, PUT, POST, DELETE를 리소스에 매핑해야한다고 말합니다. Rails는 RESTful 디자인이 아닌'Create, Read, Update, Delete, Show, List'와 같은 액션을 가리킨다. –

+0

며칠 내 답변보기 (http://stackoverflow.com/questions/2857323/what-exactly-is-rest-architecture-and-how-is-it-implemented-in-rails/2862347#2862347)). 아마 REST는 이러한 여분의 조각들을 놓치고 있으며, 그 반대의 것은 아닙니다. – Anurag

답변

7

나는 확실히 전문가는 아니지만, 그러나 당신이 당신의 자원을 재고하고 '명사'로 또는 데이터의 적어도 목록에 더 엄격하게 그들을 생각한다면, 맞게 쉬울 수 있습니다 GET, POST, PUT 및 DELETE에 대한 원하는 모든 조치. 예를 들어 /customers/ 리소스에는 각 고객에 대해 /customers/{username}/ 리소스가있을 수 있습니다. 어쩌면 그 (것)들은 그 (것)들에 관하여 정보를 준다. 홈베이스 리소스로는 /homebases/{username}/ 또는 을 사용할 수 있습니다. 아마 당신은 GET을 통해 homebase 리소스에 액세스하고, 업데이트 할 것이 있으면 POST합니다 (집계 리소스이므로 집이나 대시 보드에서 기대하지 않을 것입니다). 'matchings'당신이 /matchings/{customer},{company}/과 같이 사용할 수에 대한

(그것에 대해 아무런 규칙이 없다하더라도 예, 쉼표와 세미콜론이 허용됩니다. 쉼표는 일반적으로 두 부분 순서에 의존하고 세미콜론 있습니다 의미는 주문 독립을 의미). 이 리소스에서 GET을 사용하여 필요한 데이터 (GET 요청의 본문으로 전달되는 선택적 쿼리 매개 변수 포함), 업데이트 할 POST, 생성 할 PUT 및 삭제할 DELETE 등 필요한 데이터를 읽고, 표시하고 나열 할 수 있습니다. GET에서 전달 된 매개 변수를 사용하여 동일한 데이터에 대한 다른 뷰를 요청할 수도 있습니다. 물론 /matchings/{customer},{company}/invoices/{invoice#}/처럼 일치하는 하위 리소스를 가질 수 있습니다.

나는 그런 식으로 "RESTful 웹 서비스"(2007 O'Reilly)를 좋아했습니다.

나는 약간 이해되고 도움이되기를 바랍니다. =)

3

집계 및 합성보기가 심각한 문제라고 생각합니다. 내가 알기에 RESTful 한 모든 것에 반대하는 문제인 homepage을 처리해야했습니다.

내 솔루션은 홈페이지 또는 대시 보드를 리소스 자체로 간주하지만 GET 작업 만 의미가있는 리소스라고 생각했습니다. 홈페이지의 POST/PUT/DELETE는 평상시와 같이 특정 리소스를 대상으로했습니다.

대조적으로, 매치는 길들이기가 더 쉬운 문제인 것처럼 보입니다. 설명에서 고객과 회사 간의 단순한 매핑처럼 보이며 쿼리 문자열 매개 변수를 기반으로 매개 변수를 매개 변수화 할 수 있습니다. 지내는 기반 아키텍처보다 훨씬 넓은 의미를 가지고 있기 때문에 편안하고 디자인으로

/matchings?companies=X,Y,Z&locations=NY,CA,TX 
+0

대시 보드 리소스에서 GET을 허용하는 것이 이상하게 보일 뿐이지요. 대시 보드의 일부를 다른 리소스로 업데이트하는 것이 좋을 것 같습니다. –

+1

대시 보드를 리소스로 고려하는 것은 완벽하게 유효한 접근 방법이며 아무런 문제가 없습니다. 리소스는 메소드의 하위 세트 만 지원합니다. 유일한주의 사항은 홈페이지 리소스입니다. 일반적으로 다른 사람에게 다른 콘텐츠를 반환하는 단일 URL을 만드는 것은 좋지 않습니다. 대신에/users/bob/homegage 자원을 생성하는 것이 좋습니다. –

+0

대시 보드보기에 인증 된 액세스가 필요한 경우 메일, 페이스 북, 트위터 등 모든 사용자에게 동일한 URL을 사용할 수 있습니다. – Anurag

2

, 나는 당신이 RESTful 웹 서비스를 의미 가정합니다.

REST 기반 아키텍처는 사실상 모든 경우에 HTTP 프로토콜을 사용한다는 점을 고려해야합니다. HTTP는 일련의 메소드를 지정하기 때문에 때로는 이러한 메소드를 사용하여 RESTful 웹 서비스를 작성합니다.

그러나 RESTful 웹 서비스는 (SOAP과 달리) 구체적인 표준을 따르지 않습니다. 사용하는 것이 일반적이다 : 존재하지 않는 항목

  • 삭제 업데이트를위한 - - 새 항목을
  • PUT를 만들기위한 - - POST 존재하지 않는 항목
  • 를 가져 오는에 대한

    • 을 GET에 대한 존재하는 항목 제거

    CRUD (Create, Read, Update and Delete)는 영구 저장 장치의 기본 기능입니다.

    일반적인 RESTful 웹 서비스에서 각 HTTP 메소드가 기본 기능 중 하나와 일치하는 것을 쉽게 알 수 있지만 요점은 다음과 같습니다.이 방법이 반드시 필요하지는 않습니다.

    고려해야 할 사항이 있습니다. URL 매핑 중 하나가 문제이므로 (궁금한 사항이므로) 보안이 또 다른 것입니다. POST 요청은 HTTP 본문 (암호화 될 수 있음)에서 요청 내용을 전송하지만 GET 요청은 모든 사람이 볼 수 있도록 URL로 전송합니다.

    안전한 (암호화 된) RESTful 웹 서비스를 개발하려는 경우 모든 요청 HTTPS POST를 수행 한 다음 요청 내에서 CRUD 작업 중 수행 할 작업과 수행 할 리소스를 지정할 수 있습니다.

    또한 CRUD 개념을 더 넓은 범위로 확장 할 수 있습니다. 사실 거의 모든 애플리케이션에서 CRUD 개념을 확장 할 수 있습니다.

    CRUD는 다른 모든 작업을 기반으로하는 네 가지 기본적인 작업입니다. 귀하가 따라야 할 표준이 없으며 컨텍스트에서 의미있는 것에 따라 고유 한 프로토콜을 지정할 수 있으며 모든 관련 고려 사항 (보안, URL 등)을 염두에 두어야합니다 (보안, URL 등)

    특히 귀하의 질문과 관련하여 show_by_x, show_by_y 등과 같은 자신 만의 행동을 할 수 있습니다. REST 경찰은 당신을 체포하지 않습니다 :-)

  • +0

    'HTTP를 통한 SOAP RPC 아키텍처는 RESTful 아키텍처입니다. '응? 그 기괴한 주장에 약간의 백업을 해줄 수 있습니까? –

    +0

    나는 REST가 더 넓은 의미에서 HTTP 메소드를 사용하는 방법을 설명하려고했다. SOAP은 POST 메서드를 사용합니다. 그러나 REST가 SOAP의 대안으로 일반적으로 언급 되었기 때문에 필자가 선택한 예제는 실제로 좋지 않았다. 따라서 필자는 대답에서 해당 참조를 제거했다. 그 점을 지적 해 주셔서 감사합니다. – ivo

    0

    REST와 ORM은 사용자라는 모델이 있어도 REST와 ORM이 서로 다른 두 가지입니다. 사용자 자원을 갖출 필요가 있습니다.당신이 당신의 사용자가 로그인 한 후 대시 보드 페이지에 착륙 할 수 있습니다 (당신이 사용자 관리자의 두 가지 종류가 있다고 가정 : 자원은 모듈/섹션

    예로서 레일 컨트롤러 수준에서

    생각해 자원을 관리해야 및 일반 사용자), 당신은

    uer_dashboard namly이 개 자원

    admin_dashboard 을 가질 수 있고 모두는 행동을

    두 번째 CA를 읽고 수 있도록 SE : 나는 REST 전문가 아니지만, 희망이 도움이

    가능하면

    가 (다른 사용자 수준에 따라 서로 다른 자원) 위의 예처럼 뭔가를 고려해보십시오 : D에게

    환호를 사 미라

    관련 문제