Я новичок в создании веб-сервисов SOAP и у меня есть вопрос о RPC-декораторах.
В любом случае, мое намерение состоит в том, чтобы мой веб-сервис имел несколько более сложный тип возврата (я считаю, что это его полиморфный тип).).Протокол ввода - SOAP, а протокол вывода - XML.
Я хотел бы вернуть словарь, содержащий массив, каждый из которых со значениями, которые могут быть как плавающими, так и строковыми (см. Строку 6 в коде ниже).).Я понимаю, как это будет выглядеть как дерево элементов XML - однако я не знаю, как обозначить это в параметре _returns декоратора @rpc.Чтобы сделать ситуацию немного сложнее, если клиент отправляет неверные учетные данные, я просто хотел бы вернуть строку «Неверные учетные данные».Или, возможно, было бы проще вернуть пустой список ...
Некоторые советы по этому вопросу очень ценятся!
class CoreService(ServiceBase):
@rpc(Unicode, Unicode, Integer, _returns=Unicode) #@rpc arguments corespond to the retrieve_score() arguments below
def retreive_score(ctx, username, password, uid):
if validate_creds(username,password):
return {"score:" 0.6, features=[{"gender": "male"}, {"height": 160], ... ]
else:
return "Invalid credentials"
application = Application([CoreService], 'spyne.iefp.soap',
in_protocol=Soap11(validator='lxml'),
out_protocol=XmlDocument(polymorphic=True))