我开始使用python并尝试为ebay web service构建XML请求:
现在,我的问题是:
说,这是我的功能:
def findBestMatchItemDetailsAcrossStores():
request = """<?xml version="1.0" encoding="utf-8"?>
<findBestMatchItemDetailsAcrossStoresRequest xmlns="http://www.ebay.com/marketplace/search/v1/services">
<siteResultsPerPage>50</siteResultsPerPage>
<entriesPerPage>50</entriesPerPage>
<ignoreFeatured>true</ignoreFeatured>
<keywords>ipod</keywords> <-----REQUIRED
<itemFilter>
<paramName>PriceMin</paramName>
<paramValue>50</paramValue>
<name>Currency</name>
<value>USD</value>
</itemFilter>
<itemFilter>
<paramName>PriceMax</paramName>
<paramValue>100</paramValue>
</itemFilter>
</findBestMatchItemDetailsAcrossStoresRequest>"""
return get_response(findBestMatchItemDetailsAcrossStores.__name__, request)
其中,关键字是唯一必填字段。那么,我该如何构建方法呢?方法可以是:
更新
您在请求中看到的所有xml标记都需要由用户传递。但是关键字应该传递,其他人可以在需要时传递。
有什么建议吗?
答案 0 :(得分:7)
一个好主意是在函数签名中放入具有适当默认值(或仅None
默认值)的所有参数。是的,它需要在函数本身中输入更多内容,但界面将是干净的,自我记录的并且易于使用,因为您不必在ebay文档或函数源中查找可能的参数。它会节省你的时间。
答案 1 :(得分:0)
如何将消息建模为一个类?
class FindBestMatchItemDetailsAcrossStoresRequest:
def __init__(self,keywords):
self.keywords = keywords # required parameters in the constructor
# set up the default values....etc
self.siteResultsPerPage = 50
self.name = 'Currency'
def send(self):
# build message from self.xxx
return get_response()
#usage
req = FindBestMatchItemDetailsAcrossStoresRequest('ipod')
response = req.send()
#usage with optional args
req.siteResultsPerPage = 150
response = req.send()
答案 2 :(得分:0)
我会为所有人使用命名参数。通过这样做,很容易分配默认值,并强制用户提供所需的参数(通过省略默认值)