Spyne Fault - HTTP返回代码
问题描述:
我已阅读关于Spyne Faults(http://spyne.io/docs/2.10/manual/03_types.html)的信息,但无法正确地使用400返回码提醒错误。我有故障的反应形成正确的,但有一个500 HTTP返回代码时,我有一个要求返回400Spyne Fault - HTTP返回代码
@srpc(Boolean, _returns=String)
def requestConfiguration(value):
#if value is true, get all the data
if value == True:
#todo - get the config
return 'True Received'
else:
# if anything other than True is received, MUST respond with a SOAP fault and HTTP 400
raise Fault(faultcode="Client.", faultstring="Value must be True")
# raise error.InvalidInputError("problem", "problem")
阅读一些文件(http://spyne.io/docs/2.10/modules/spyne/model/fault.html#Fault)的,我将其解释为在faultcode必须是字符串从客户端开始,它将返回400错误。 (我知道如果 - 否则是坏的,即时只是试图得到一个概念证明工作之前,我写代码正常)
我想我需要继承故障,而不是只提高它,但不能提高我的头它。我跳入代码/协议/ SOAP/soap11,只见那fault_to_http_reponse_code只是返回HTTP提前
答
我放弃了在子类中的方法500
谢谢你,相反,我刚刚更新的soap11的fault_to_http_reponse_code功能。 PY。它是一个总体补丁,但它为我想要的工作做好了工作。
def fault_to_http_response_code(self, fault):
from spyne.const.http import HTTP_400, HTTP_401, HTTP_404, HTTP_405, HTTP_413, HTTP_500
from spyne.error import Fault, InternalError, ResourceNotFoundError, RequestTooLongError, RequestNotAllowed, InvalidCredentialsError
if isinstance(fault, RequestTooLongError):
return HTTP_413
if isinstance(fault, ResourceNotFoundError):
return HTTP_404
if isinstance(fault, RequestNotAllowed):
return HTTP_405
if isinstance(fault, InvalidCredentialsError):
return HTTP_401
if isinstance(fault, Fault) and (fault.faultcode.startswith('Client.')
or fault.faultcode == 'Client'):
return HTTP_400
return HTTP_500
然后我只是养正断层,与客户端开始在faultcode。
raise Fault(faultcode="Client.", faultstring="value must be True)
有些人会用适当的方法切入。