【发布时间】:2021-03-19 07:10:56
【问题描述】:
我正在使用 spyne 创建我的网络服务。
#urls.py
urlpatterns = [
url(
r'^InventoryService.wsdl', DjangoView.as_view(
name="InventoryService",
services=[InventoryService],
tns='InventoryService',
in_protocol=Soap12(validator='lxml'),
out_protocol=Soap12(),
cache_wsdl=False
)
),
]
views.py
#views.py
spyne.const.RESULT_SUFFIX =''
spyne.const.REQUEST_SUFFIX ='Request'
class GetFilterValuesRequest(ComplexModel):
id = String(min_occurs=1, max_length=64, nillable=False)
password = String(min_occurs=0, max_length=64, nillable=False)
productId = String(min_occurs=1, max_length=64, nillable=False)
class FilterValues(ComplexModel):
productId = String(min_occurs=1, max_length=64, default='55', nillable=False)
class InventoryService(Service):
@rpc(GetFilterValuesRequest, _returns=FilterValues, )
def getFilterValues(ctx, GetFilterValuesRequest):
return FilterValues(productId='33', )
我想从输入中删除外部的“GetFilterValuesRequest”,并在对“FilterValues”的输出响应中更新“getFilterValues”。
我将添加我当前的输入和输出以及我的预期输入和输出。
下面是我通过soapui调用这个请求时的当前输入输出
#Current input
<soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope" xmlns:inv="InventoryService" xmlns:core="core.views">
<soap:Header/>
<soap:Body>
<inv:getFilterValuesRequest>
<!--Optional:-->
<inv:GetFilterValuesRequest>
<core:id>?</core:id>
<!--Optional:-->
<core:password>?</core:password>
<core:productId>?</core:productId>
</inv:GetFilterValuesRequest>
</inv:getFilterValuesRequest>
</soap:Body>
</soap:Envelope>
#Current output
<soap12env:Envelope xmlns:soap12env="http://www.w3.org/2003/05/soap-envelope" xmlns:tns="InventoryService" xmlns:s0="core.views">
<soap12env:Body>
<tns:getFilterValuesResponse>
<tns:getFilterValues>
<s0:productId>33</s0:productId>
</tns:getFilterValues>
</tns:getFilterValuesResponse>
</soap12env:Body>
</soap12env:Envelope>
以下是我在soap ui中的预期输出。
#Expected input
<soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope" xmlns:inv="InventoryService" xmlns:core="core.views">
<soap:Header/>
<soap:Body>
<inv:GetFilterValuesRequest>
<core:id>?</core:id>
<!--Optional:-->
<core:password>?</core:password>
<core:productId>?</core:productId>
</inv:GetFilterValuesRequest>
</soap:Body>
</soap:Envelope>
#Expected output
<soap12env:Envelope xmlns:soap12env="http://www.w3.org/2003/05/soap-envelope" xmlns:tns="InventoryService" xmlns:s0="core.views">
<soap12env:Body>
<tns:GetFilterValuesResponse>
<tns:FilterValues>
<s0:productId>33</s0:productId>
</tns:FilterValues>
</tns:GetFilterValuesResponse>
</soap12env:Body>
</soap12env:Envelope>
【问题讨论】: