2011-02-08 2 views
3

제 질문은 간단합니다.ReSTful 디자인 : 빈 개체를 새 양식을 만들기위한 템플릿으로 반환하십시오.

는 현재 다음과 같은 URI는 존재 : 내가하고 싶은 무엇

http://someserver/service/item   GET returns all items 
http://someserver/service/item   POST creates a new item 
http://someserver/service/item/{id}  GET returns item with id {id} 
http://someserver/service/item/{id}  PUT updates item with {id} 

는 개체 매개 변수, 해당 유형의 목록이 포함되어 있습니다 새 항목을 만들기위한 템플릿처럼 빈 '항목을'돌려 주어, 필요 여부. 그 이유는 제네릭 jquery 'create new'플러그인을 완전히 새로운 무언가에 적용 할 수있는 데이터 구조를 전혀 모르고 있기 때문입니다.

이것을 구현하는 가장 좋은 방법은 무엇입니까?

시간이 지나면 감사하겠습니다.

답변

2

나는 거의 같은 일을합니다. POST 할 수있는 "항목 목록"리소스에 링크가 포함됩니다. 응답은 새 항목의 템플리트입니다. 아마도 템플릿을 검색하기 위해 GET을 할 수도 있지만 내 ID가 멱등하지 않도록 항목에 새 ID를 할당 할 수 있습니다.

+0

아아아 - 알겠습니다! 그래서 ID가있는 새로운 객체를 생성 한 빈 POST를 실행 한 다음 응답에서 그 객체를 다시 보낸 다음 새로 만든 객체에 대해 PUT을 수행합니까 ?? 매개 변수 데이터 유형, 최대 길이 등을 나타내는 메타 데이터를 응답 객체에 포함합니까? – jimjim

+1

@jimjim 내 답변에는 데이터 유형, 유효성 검사 정보, 데이터 바인딩 등에 대한 정보가있는 메타 데이터 문서에 대한 링크가 포함되어 있습니다. 그러면 클라이언트가 메타 데이터 정보를 캐시 할 수 있습니다. 모든 인스턴스 문서에 정보를 포함 할 필요가 없습니다. Location 헤더를 사용하여 새로 생성 된 리소스의 URL을 제공해야합니다. –

8

나는 Darrel이 제공 한 대답을 이해하지만 나는 그것에 대해 논쟁의 여지가있다.

이 템플릿 개체 (리소스)는 일반화하기를 원하므로 응용 프로그램의 중요한 부분입니다. 그것은 일급 시민권이며 우리는 REST에 관해서 이야기하고 있습니다, 그래서 그것은 상응하는 대우를 받아야합니다. 내가 템플릿 리소스를 얻을 수 있어야합니다, 그것은 POST 뒤에 "숨겨져"해서는 안됩니다.

GET http://someserver/service/item/template 

그런 다음 GET을 통해 리소스에 액세스 할 수 있으면 버전 및 가변성을 훨씬 쉽게 도입 할 수 있습니다.

+2

:-) 끝점의 모양이 그다지 관련이 없으므로 샘플 URI를 끝점에 제공하는 것을 신중히 피했습니다. rel = "create | new | template | whatever"는 목록 문서에서 중요한 URI를 발견 할 수있게 해줍니다. URI를 ../template으로 명명하고 싶다면 완벽하게 좋다. 내 데이터베이스에 저장된 ID를 생성하고 증가시키기 때문에 POST를 사용합니다. ID에 대해 GUID를 사용하면 GET이 제대로 작동합니다. –

관련 문제