2013-05-23 3 views
1

Google을 많이 검색할수록 더 명료 한 이름 지정이 표준보다 더 많은 흑인 예술처럼 보입니다. 내가 가지고있는 시나리오와 현재 사고하고있는 라인을 정리하고 REST 경험을 가진 사람들에게 몸무게를 재어보고 싶습니다.RESTful 네이밍

물리적 인 폴더 또는 바인더라고 생각할 수있는 "패킷"개체가 있습니다. . 이 패킷 안에는 하나 이상의 양식이 있습니다. 내 시스템은 이것을 PacketForms라는 리소스로 표시합니다. 각 양식 레코드에는 양식이 표시/인쇄되는 순서를 정의하는 SortIndex 열이 있습니다.

응용 프로그램에 양식 목록을 표시 할 때 사용자가 양식의 SortIndex를 변경할 수있는 위/아래 화살표가 있습니다. 이제이 작업을 구현할 준비가되었습니다.

제 생각에는 정렬 순서로 양식을 승격/강등시키기위한 작업이 특별히 필요했습니다. 이 접근 방식을 사용하면 여기에 나온 내용을 토대로 정렬 인덱스 에 대해을 리소스로 생각해야합니다. 그래서, 나는 그런 식으로 쿼리 문자열에 내 의도를 표현할 수있다. 맞습니까?/PacketFormSortIndex/5? 행동

PUT =

홍보 그러나 나는 또한 단지 PacketForm 자체를 업데이트하고 SortIndex의 변화에 ​​대한 백엔드 모습을하지 왜 생각했습니다. 승격/강등 방식 대신 SortIndex가 변경되면 현재 색인이있는 양식으로 바꿀 것입니다. 따라서 누군가가 SortIndex = 3을 사용하여 PacketForm을 업데이트하여 SortIndex = 2 값을 갖는 경우 시스템은 두 레코드를 모두 업데이트하여 스왑을 수행합니다.

개인적으로 나는 첫 번째 접근 방식의 원자 성을 좋아합니다. 매우 명확하고 명확한 목적을 가지고 있으며 백엔드의 코드는 더 깨끗합니다. 그러나 내 시스템에 논리를 전파하면 "자원 무분별"에 대해 조금 걱정이됩니다.

그래서 여기에 두 가지 질문이 있습니다. 어느 쪽이든이 접근법 중 어느 쪽이 당신에게 좀 더 "편안함"을 느끼는가? 처음이라면 제안한 방식으로 쿼리 스트링을 사용하는 것이 적절합니까? 아니면 해당 URL을 구성하는 더 RESTful 한 방법이 있습니까?

널리 사용되는 무언가에 관해서는, 내가 찾던 다양한 정보로 인해 정말로 고심하고 있습니다.

답변

1

승격/강등 또는 다른 방법으로 URL의 문법 만 말하는 경우입니다. 백엔드 뒤에서 비즈니스를 수행하고 다른 리소스가 주문 변경에 영향을 미치는지 확인해야합니다.

즉, PacketFormSortIndex를 만드는 것은별로 도움이되지 않습니다. Waht는 Packet 또는 PacketFormSortIndex에 대한 강등/승격 액션을 적용하는 것의 차이가됩니다. 나에게는 동일한 의미로 보일 수 있으므로 별도의 엔티티에 대한 타당성은 없다.

그리고 마지막으로, 나는 다음과 같은 대안의 가고 싶어 : {"index": 3}을하고 마술은 무대 뒤에서 일어날 것 ...하지만 경우 :

1) 내가 필드 만 보낼 것 PUT /packet/1이 업데이트되고 난 당신이 업데이트 곳 자원의 배열로 응답해야 resty로했다 :

[ { "id": 1, "index": 3}, {"id":4, "index":4}] 

2) 벌크 방식과 자원이 영향을받는 결정하는 로직이 프론트 엔드 PUT /packet/_bulk[ { "id": 1, "index": 3}, {"id":4, "index":4}]을 보낼입니다.

백엔드 성능이 여기에 문제가되지 않는다면 최선의 해결책은 1입니다.