2014-10-21 1 views
1

python-eve을 사용하여 API를 작성하고 있습니다.HATEOAS를 구현하는 Python-eve API 리소스에 대한 링크 추가

내 디자인은 간단 뭔가, 두 개의 자원, 사용자와 장치가 있습니다

  • /사용자 [/ ID]
  • /사용자/ID/장치 [/ ID]

을 코드는 (settings.py)입니다 :

users_schema = { 
    'nickName': { 
    'type': 'string', 
    'required': True, 
    }, 
    'email': { 
    'type': 'string', 
    'required': True, 
    'unique': True 
    } 
} 

devices_schema = { 
    'name': { 
    'type': 'string', 
    'required': True, 
    }, 
    'user_id': { 
    'type': 'objectid', 
    'data_relation': { 
     'resource': 'users', 
     'embeddable': True 
    }, 
    } 
} 

users = { 
    'item_title': 'user', 
    'url': 'users', 
    'schema': users_schema, 
} 

user_devices = { 
    'resource_title': 'devices', 
    'url': 'users/<regex("[a-f0-9]{24}"):user_id>/devices', 
    'schema': devices_schema, 
    'datasource': { 
    'source': 'devices', 
    } 
} 

DOMAIN = { 
'users': users, 
'user_devices': user_devices 
} 

내가 사용자를 생성하는 경우, t

{ 
"_updated": "Tue, 21 Oct 2014 13:08:56 GMT", 
"_etag": "d6ff9457f5b196a8c245a7dc91e7fca0d28c5268", 
"_links": { 
    "self": { 
     "href": "https://stackoverflow.com/users/54465ae80640fd0f60f6aa09", 
     "title": "user" 
    }, 
    "parent": { 
     "href": "", 
     "title": "home" 
    }, 
    "collection": { 
     "href": "/users", 
     "title": "users" 
    } 
}, 
"_created": "Tue, 21 Oct 2014 13:08:56 GMT", 
"_id": "54465ae80640fd0f60f6aa09", 
"nickName": "superuser", 
"email": "[email protected]" 
} 

HATEOAS은 기본적으로 활성화되어 있습니다 : 그는 사용자의 자원 (/사용자/54465ae80640fd0f60f6aa09)처럼 보인다. 이 엔드 포인트가 존재하고 코드 (user_devices)에 정의되어 잘 작동하므로 이전 자원에서 /users/54465ae80640fd0f60f6aa09/devices으로 사용자 장치에 대한 링크가 필요합니다.

나는 pyhon - 이브는 사용자의 자원이 장치 링크를 추가 할 수 사용자사용자 장치 사이의 관계를 이해 누가 할 수 있습니까? 그렇지 않으면 사용자 54465ae80640fd0f60f6aa09는 장치를 가져 오는 방법을 알 수 없습니다. 장치를 얻는 방법 "명백한"입니다

{ 
"_updated": "Tue, 21 Oct 2014 13:08:56 GMT", 
"_etag": "d6ff9457f5b196a8c245a7dc91e7fca0d28c5268", 
"_links": { 
    "self": { 
     "href": "https://stackoverflow.com/users/54465ae80640fd0f60f6aa09", 
     "title": "user" 
    }, 
    "devices": { 
     "href": "https://stackoverflow.com/users/54465ae80640fd0f60f6aa09/devices", 
     "title": "devices" 
    }, 
    "parent": { 
     "href": "", 
     "title": "home" 
    }, 
    "collection": { 
     "href": "/users", 
     "title": "users" 
    } 
}, 
"_created": "Tue, 21 Oct 2014 13:08:56 GMT", 
"_id": "54465ae80640fd0f60f6aa09", 
"nickName": "superuser", 
"email": "[email protected]" 
} 

:

내가 좋아하는 뭔가를 기대하고있다.

대단히 감사합니다.

답변

1

당신도 사용자 => 장치 사이에

users_schema = { 
     'nickName': { 
     'type': 'string', 
     'required': True, 
     }, 
    'data_relation': { 
     'resource': 'user_devices', # link to device on a field _id 
     'field': '_id', 
     'embeddable': True 
    }, 
     'email': { 
     'type': 'string', 
     'required': True, 
     'unique': True 
     } 
    } 
+0

안녕을 링크를 추가해야합니다! 감사! 나는 그것을 시도했지만 여전히 "user_devices"와 "user"_links의 관계가 없다. 전체 코드를 제공 할 수 있습니까? 다시 한 번 감사드립니다! – MTG

관련 문제