我想建立一個庫,將建立一個API的XML響應。爲了幫助說明我的問題,以下是2個示例API響應。第一個顯示菜單,第二個顯示文本。Python的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)。