通过Flask-Potion使用JSON Hyper-Schema,我有一个API,它返回/api/species
处找到的物种列表。它返回如下内容:
[
{
"$uri": "/api/species/1",
"latin_name": "danio rerio",
"name": "zebrafish"
}
]
对于我的网络前端,我希望/species/1
成为面向用户的网址,从/api/species/1
获取其数据用于显示目的。这个面向用户的URL与底层API无关,除非映射ID是有意义的,因为我将如何格式化面向用户的URL?因此,当我有一个应该链接到各自物种页面的物种清单时,如何形成/species/1
?由于我从API获得的$ uri是API uri,我应该解析此字符串以提取" 1
"还是我有一个更优雅的解决方案?
答案 0 :(得分:1)
在Potion中有几种方法可以做到这一点。 "$uri"
作为对象标识符的选择并非特定于JSON HyperSchema,它只是Potion中的默认配置选项。
如果您希望使用"$uri"
字段,则必须对其进行解析以检索ID。但您也可以告诉Potion使用"$id"
documented here返回带有数字ID的Meta.id_field_class
字段。
class SpeciesResource(ModelResource):
# ...
class Meta:
id_field_class = fields.Integer
您可以通过设置"$type"
Meta.include_type = True
字段结合使用
通常,如果要向资源添加任何类型的只读字段,只需在架构中指定它:
class SpeciesResource(ModelResource):
# ...
class Schema:
id = fields.Integer(io='r')