一. ViewModel
我们获取书籍数据的api, 一个是通过关键字参数, 一个是通过书籍isbn, 得到的数据结构并不相同, 我们想做成统一的接口方便调用。这就需要用到viewmodel
isbn查找:
关键字查找
使用viewmodel
新建app/viewmodels/book.py:
class BookViewModel:
@classmethod
def package_single(cls, data, keyword): # 单个的,即isbn查找
returned = {
'books': [],
'total': 0,
'keyword': keyword
}
if data:
returned['total'] = 1
returned['books'] = [cls.__cut_bookdata(data)]
return returned
@classmethod
def package_collection(cls, data, keyword): # 关键字查找
returned = {
'books': [],
'total': 0,
'keyword': keyword
}
if data:
returned['total'] = data['total']
returned['books'] = [cls.__cut_bookdata(book) for book in data['books']]
# __cut_bookdata是处理单个book数据的, 这样使用就可以处理多个book数据了
return returned
@classmethod
def __cut_bookdata(cls, data):
# 处理单个的数据方法, 这样package_single和package_collection都可以用。
#不要想着定义个列表, 然后来的不管是多个数据还是单个数据,都放进去。这样的编码并不好。
book = {
'title': data['title'],
'publisher': data['publisher&