2014-12-26 5 views
1

내 모델에는 EventUser이 있습니다. 각 Event에는 User을 가리키는 leader 속성이 있지만 항상 호스트가 반드시 필요한 것은 아닙니다.이 경우 호스트는 null입니다. 내 API에서REST API에서 관계 노출 (사용자가 객체를 참조하는 방법)

는 :

GET /users/

GET /events/{"name": "John", "href": "https://stackoverflow.com/users/3/"}

GET /events/2/host/는 사용자 반환해야 모든 이벤트의 목록을 반환, 모든 사용자

GET /users/3/ 반환 사용자 3 정보의 목록을 반환 누가 이벤트 2의 주최자인가 (이것은 사용자 3)

{"href": "https://stackoverflow.com/users/3/"}을 보내시겠습니까? 단순히 사용자에게 연결 되나요? 또는 사용자 자신의 표현 인 {"name": "John", "href": "https://stackoverflow.com/users/3/"}?

내가 첫 번째 옵션을 사용한다고 가정 해 보겠습니다. 사용자를 어떻게 변경합니까?

PUT /events/2/host/ json={"href": "https://stackoverflow.com/users/2/"} -이 말이 맞는가요? 그런 다음 내 서버는 새로운 호스트 인 사용자 아이디를 파악하기 위해 엔드 포인트를 구문 분석 한 다음이를 데이터베이스에 할당해야합니다. 조금 우아하지는 않지만 Flask는 끝점을 인수로 파싱하는 방법이 있습니다. 그러나 이것이 이것을하는 올바른 방법입니까?

마지막으로 GET /events/2/ 리소스에서 나는 "host":{"href": "/events/2/host/"}이라는 특성을 가지고 있다고 생각했습니다. 이게 말이 돼? 호스트가 없으면 href 속성이 전혀 없으며 host에 할당 된 빈 사전 만 존재합니다.

답변

0

간략히 말하자면, 예를 들어 이벤트를 주최하고이를 업데이트 할 때 표현을 반환해야한다고 생각합니다. 그러나 디자인은 당신이 다른 경우를 여기에

을 ;-) 있습니다까지 남아 :

GET /events/2/host/ 
{"name": "John", "href": "https://stackoverflow.com/users/3/"} 

PUT /events/2/host/ 
{"href": "https://stackoverflow.com/users/3/"} 

DELETE /events/2/host/ (to set the host field to null) 

내가 하나로, OData V4 사양은 당신에게 당신의 디자인에 대한 좋은 아이디어를 줄 수 있다고 생각합니다. 이 링크는 OData와 엔티티 관계를 처리하는 방법에 대한 좋은 통찰력을 제공합니다 : http://www.asp.net/web-api/overview/odata-support-in-aspnet-web-api/odata-v4/entity-relations-in-odata-v4.

또한 쿼리 매개 변수 $expand을 사용하면 OData에서 엔터티 종속성을로드 할 경우 구성 할 수 있습니다. 필드 host이 예를 들어 정의 된 경우, 참조 된 엔터티의 내용을 참조 (있는 경우)합니다.

OData는 또한 $ref 접미사가있는 종속성에 대한 참조를 가져 오는 방법을 제공합니다.

다른 링크로도 아이디어를 줄 수 있습니다 : http://templth.wordpress.com/2014/12/15/designing-a-web-api/.

희망이 있으면 도움이됩니다. 티에리