python-eveを使用して API を構築しています。
私のデザインは単純なもので、ユーザーとデバイスの 2 つのリソースがあります。
- /ユーザー[/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
}
ユーザーを作成すると、ユーザー リソースは ( /users/54465ae80640fd0f60f6aa09 )のようになります。
{
"_updated": "Tue, 21 Oct 2014 13:08:56 GMT",
"_etag": "d6ff9457f5b196a8c245a7dc91e7fca0d28c5268",
"_links": {
"self": {
"href": "/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": "super@user.com"
}
HATEOAS はデフォルトで有効になっています。前のリソースでは、ユーザー デバイス ( /users/54465ae80640fd0f60f6aa09/devices ) へのリンクを期待していました。このエンドポイントが存在し、コード (user_devices) で定義され、正常に動作するためです。
userとuser-devicesの関係を pyhon-eve に理解させて、このデバイス リンクをユーザー リソースに追加できるのは誰ですか? そうしないと、ユーザー 54465ae80640fd0f60f6aa09 はデバイスを取得する方法を知りません。
私は次のようなものを期待しています:
{
"_updated": "Tue, 21 Oct 2014 13:08:56 GMT",
"_etag": "d6ff9457f5b196a8c245a7dc91e7fca0d28c5268",
"_links": {
"self": {
"href": "/users/54465ae80640fd0f60f6aa09",
"title": "user"
},
"devices": {
"href": "/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": "super@user.com"
}
デバイスを取得する方法が「明白」なのはどこですか。
どうもありがとうございました。