为了保护我的公共Eve REST API,我想避免像'{"_status": "ERR", "_error": {"code": 422, "message": "Insertion failure: 1 document(s) contain(s) error(s)"}, "_issues": {"magicfield": "requiredfield"}}'
这样的回复。
相反,我只想返回状态代码401,其中包含一个空的响应主体(或至少一个空的“_issues”字段)。有没有办法做到这一点?身份验证/授权不是一种选择,因为它是公共注册资源(允许公共方法POST)。
我已经将状态代码更改为401(VALIDATION_ERROR_STATUS),但仍然存在特定的验证错误,因此攻击者可以根据验证错误“修复”他的请求。
目的是仅允许具有一些魔术字段值的请求(经过特定长度验证等)并禁止对该资源的所有其他请求。
答案 0 :(得分:1)
你有没有看过event hooks?尝试这样的事情:
def my_callback(resource, request, response):
data = response.json
del(data['_issues'])
del(data['_error'])
response.set_data(json.dumps(data))
app = Eve()
app.on_post_POST += my_callback
app.run