REST 모델에서 자원을 중첩하는 올바른 방법은 무엇입니까?


14

REST API 서비스를 설계하고 자원을 중첩시키는 올바른 방법을 고수했습니다.

리소스 : 파트너, 티켓, 설정

자원 간 연결 :

  • 파트너에게 많은 티켓이 있습니다.
  • 파트너에게는 설정이 있으며

탈취 논리 :

  • 모든 파트너를 익명 사용자로 표시 할 수 있습니다.
  • 익명의 사용자로 지정된 파트너에 새 티켓을 추가 할 수 있습니다.
  • 파트너 만 자신의 티켓을 나열 할 수 있습니다.
  • 파트너 만 자신의 티켓을 수정할 수 있습니다.
  • 파트너 만 설정을 나열 할 수 있습니다.
  • 파트너 만 설정을 수정할 수 있습니다.

내가 지금까지 한 일 :

파트너 리소스

GET / partners-모든 파트너 나열
GET / partners / : id-: id 매개 변수로 지정된 파트너의 세부 사항 표시
GET / partners / : partner_id / tickets-파트너의 티켓 목록
GET / partners / : partner_id / tickets / : id-세부 사항 지정된 파트너의 티켓
POST / partners / : partner_id / tickets-새 티켓
PUT / partners / : partner_id / tickets / : id를 저장합니다. -id 매개 변수로 지정된 티켓을 업데이트합니다.
GET / partners / : partner_id / settings-파트너 설정 목록
PUT / partners / : partner_id / settings-파트너 설정 업데이트

문제 / 질문

중첩 된 리소스 (티켓, 설정)를 분리하여 리소스를 분리하거나 별도의 리소스로 복제하는 것이 적절한 방법입니까?

예 :

GET / tickets / : id
POST / tickets
PUT / tickets / : id

GET / 설정
PUT / 설정

답변:


8

증오 :

GET /partners/:partner_id/tickets -파트너의 티켓 목록, 즉 URI 형식을 반환합니다. /tickets/:id

GET /partners/:partner_id/tickets/:id -필요하지 않다

POST /partners/:partner_id/tickets -티켓을 작성하고 파트너와 연관시키고 양식의 새 URI와 함께 201을 리턴합니다. /tickets/:id


2
이제 더 이해합니다. 고마워요 :) 그러나 성능은 어떻습니까? 상황을 가정 해 봅시다. 간단한 정보가 담긴 티켓 목록을 작성하려고합니다. 파트너의 티켓 목록을 요청해야하며, 그 이후에는 각 티켓마다 요청해야합니다. 내가 맞아?
Przemek

그래요 또는 /partners/:partner_id/tickets티켓의 표준 URI뿐만 아니라 각 티켓에 대한 유용한 데이터를 목록에 포함 시킬 수 있습니다. 예를 들어 JSON에서는 일 수 있으므로 [{href='/tickets/12',value=10,due='2013-08-13'},{href='/tickets/18',value=7,due='2013-09-02'}]클라이언트는 즉시 일부 테이블을 표시하고 추가 조작을 위해 전체 티켓 리소스를 GET / PUT 할 수 있습니다.
Javier

알았어
Przemek

BTW. / partners / : partner_id / tickets의 경우 파트너 또는 티켓 리소스 섹션에 문서를 제공해야합니까?
Przemek

@Javier DELETE는 어떻습니까? DELETE /tickets/:id?
Mengdi Gao
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.