def ValidatedPOSTAPI(request, schema, expected_params, target):
"""
Validate POST APIs.
"""
error_response = None
if expected_params:
_is_valid_query(request.GET, expected_params) # Either passes through or raises an exception.
if schema:
# If there is a problem with the json data, return a 400.
try:
data = json.loads(request.body.decode("utf-8"))
validate(data, schema)
except Exception as e:
# Check the value is in settings, and that it is not None
if hasattr(settings, 'RAMLWRAP_VALIDATION_ERROR_HANDLER') and settings.RAMLWRAP_VALIDATION_ERROR_HANDLER:
error_response = _call_custom_handler(e)
else:
error_response = _validation_error_handler(e)
else:
data = json.loads(request.body.decode('utf-8'))
if error_response:
response = error_response
else:
request.validated_data = data
response = target(request)
if isinstance(response, HttpResponse):
return response
else:
return HttpResponse(json.dumps(response))
评论列表
文章目录