我正在尝试构建一个为 API 构建 XML 响应的库。为了帮助说明我的问题,这里有 2 个示例 API 响应。第一个用于显示菜单,第二个用于显示文本。
<CiscoIPPhoneMenu>
<Title>Title text goes here</Title>
<Prompt>Prompt text goes here</Prompt>
<MenuItem>
<Name>The name of each menu item</Name>
<URL>The URL associated with the menu item</URL>
</MenuItem>
<SoftKeyItem>
<Name>Name of soft key</Name>
<URL>URL or URI of soft key</URL>
<Position>Position information of the soft key</Position>
</SoftKeyItem>
</CiscoIPPhoneMenu>
...
<CiscoIPPhoneText>
<Title>Title text goes here</Title>
<Prompt>The prompt text goes here</Prompt>
<Text>The text to be displayed as the message body goes here</Text>
<SoftKeyItem>
<Name>Name of soft key</Name>
<URL>URL or URI of soft key</URL>
<Position>Position information of the soft key</Position>
<SoftKeyItem>
</CiscoIPPhoneText>
好的,所以我的模块大纲如下所示:
class CiscoIPPhone(object):
def __init__(self, title=None, prompt=None):
self.title = title
self.prompt = prompt
class MenuItem(object):
def __init__(self, name, url):
self.name = name
self.url = url
class CiscoIPPhoneMenu(CiscoIPPhone):
def __init__(self, *args, **kwargs):
super(CiscoIPPhoneMenu, self).__init__(*args, **kwargs)
self.items = []
def add_menu(self, name, url):
self.items.append(MenuItem(name, url))
注意:为了可读性,我删除了这些类处理的验证和清理。
所以我的问题是:
- 我实际上是在输出这些对象的序列化表示,这样做是否被认为是错误的或不好的做法?
- 是否有描述这种 API 接口类的设计模式?
- 是否有一个编写优雅的 Python 库(Pythonic)可以做类似的事情?(我想像 Django 模型序列化或 Django-Tastypie 的精简版)。