Web 服务生成的 XML 代码无效
Invalid XML code generated by web service
@service.xml
装饰器似乎在 web services RPC 中损坏了。
@service.xml
def concat(a, b):
return a + b
结果是:
>>> from urllib import urlopen
>>> r = urlopen("http://127.0.0.1:8000/webservice/default/call/xml/concat/hello/
world")
>>> r.read()
'<?xml version="1.0" encoding="UTF-8"?>helloworld'
缺少最后一部分会产生无效 XML。
但是,JSON 和 CSV 效果很好。
@service.json
def concat(a, b):
return a + b
测试:
>>> r = urlopen("http://127.0.0.1:8000/webservice/default/call/json/concat/hello
/world")
>>> r.read()
'"helloworld"'
我正在脚手架应用程序的副本中对此进行测试。我是不是遗漏了什么或者这真的是个问题?
我认为这只是书中的一个坏例子。要生成有效的 XML,该函数应该 return 列表或字典(或具有 .as_list
、.as_dict
或 .custom_xml
方法的对象)。例如:
@service.xml
def concat(a, b):
return dict(result=a + b)
产生:
<?xml version="1.0" encoding="UTF-8"?>
<document>
<result>helloworld</result>
</document>
@service.xml
装饰器似乎在 web services RPC 中损坏了。
@service.xml
def concat(a, b):
return a + b
结果是:
>>> from urllib import urlopen
>>> r = urlopen("http://127.0.0.1:8000/webservice/default/call/xml/concat/hello/
world")
>>> r.read()
'<?xml version="1.0" encoding="UTF-8"?>helloworld'
缺少最后一部分会产生无效 XML。
但是,JSON 和 CSV 效果很好。
@service.json
def concat(a, b):
return a + b
测试:
>>> r = urlopen("http://127.0.0.1:8000/webservice/default/call/json/concat/hello
/world")
>>> r.read()
'"helloworld"'
我正在脚手架应用程序的副本中对此进行测试。我是不是遗漏了什么或者这真的是个问题?
我认为这只是书中的一个坏例子。要生成有效的 XML,该函数应该 return 列表或字典(或具有 .as_list
、.as_dict
或 .custom_xml
方法的对象)。例如:
@service.xml
def concat(a, b):
return dict(result=a + b)
产生:
<?xml version="1.0" encoding="UTF-8"?>
<document>
<result>helloworld</result>
</document>