python - python-eve 的多态类型

标签 python eve

我想要一个针对多个模式进行验证的端点。我已经阅读了文档和 Eve 的一些代码,但我并不清楚这是可能的。这是我希望能够执行的操作的一个简单示例:

POST http://eve-server/vehicles/
{
    type: 'Boat',
    manufacturer: 'Seadoo',
    propeller_size: 2.0
}

POST http://eve-server/vehicles/
{
    type: 'Airplane',
    manufacturer: 'Boeing',
    wing_span: 195.8
}

GET http://eve-server/vehicles/

[
    {type: 'Boat', manufacturer: 'Seadoo', propeller_size: 2.0},
    {type: 'Airplane', manufacturer: 'Boeing', wing_span: 195.8}
]

Eve/Cerberus 是否支持这样的多态类型?如果没有,是否可以插入类似 JSON Schema 的东西来支持它,同时保持 data_relation 提供的引用完整性?

最佳答案

嗯,我不确定我是否理解你的问题。乍一看,我会说这正是普通 API 端点的行为方式。我假设 propeller_sizewing_span 是可选字段。您可以像示例中那样一次发布一个文档:

POST http://eve-server/vehicles/
{
    type: 'Boat',
    manufacturer: 'Seadoo',
    propeller_size: 2.0
}

POST http://eve-server/vehicles/
{
    type: 'Airplane',
    manufacturer: 'Boeing',
    wing_span: 195.8
}

或者您可以发布文档列表:

POST http://eve-server/vehicles/    
[
    {type: 'Boat', manufacturer: 'Seadoo', propeller_size: 2.0},
    {type: 'Airplane', manufacturer: 'Boeing', wing_span: 195.8}
]

在这两种情况下,当您在同一个端点进行 GET 时,您将获得可用文档的列表:

GET http://eve-server/vehicles/    
{
    "_items": [
        {type: 'Boat', manufacturer: 'Seadoo', propeller_size: 2.0},
        {type: 'Airplane', manufacturer: 'Boeing', wing_span: 195.8}
    ]
    "_meta": {
        "total": 259,
        "page": 1,
        "size": 25
    }
}

假设 HATEOAS 已被禁用,否则您还将获得一个 _links 元字段。

话虽如此,请记住您可以设置 multiple endpoints all targeting the same datasource ,因此您可以拥有一个具有自己的架构和验证的仅 POST 端点,也可能具有具有不同架构的仅 GET 端点,也许是因为在这样的端点上您返回的字段已通过 mongo 或事件 Hook (回调)添加),或通过其他 API 端点。

关于python - python-eve 的多态类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26976354/

相关文章:

Python Eve - 如何按日期时间值过滤

Python Eve - 如果存在则更新记录,否则插入

python - 将值添加到现有行 -DataFrame

Python Eve 从给定文件夹提供静态文件

rest - Python Eve 自定义端点,但数据从数据库中提取

python - 如何在 python eve 中存储到数据库之前处理数据

python - 如何在openerp中多次继承一个类?

python - 使 PyQt QRadiobutton 跨多个布局独占

python - 用于 GrabCut 算法的 OpenCV Python 绑定(bind)

python - 从python读取json文件