我认为这是一个普遍的问题,但是我还没有看到任何好的解决方案。总体思路是,我想将API调用的各个部分完全分开。现在我有:
# api.py
@flask.route('/api/data', methods=['GET'])
def data():
return flask.jsonify(do_business_logic())
# logic.py
def do_business_logic():
authorized = is_authorized_for_data(flask.request.headers['user-token'])
if not authorized:
return HTTPStatus.UNAUTHORIZED
data = get_data()
return data if data else HTTPStatus.NOT_FOUND
这可行,但是根据业务逻辑,我有HTTPStatus
个字符。理想情况下,我会将其提升到api
的级别。这可能是挑剔的。我能想到的唯一真正的解决方案是为这些值发明一个替代,例如enum
,但这似乎增加了不必要的复杂性。我也可以抛出异常,但这似乎违反了“保持异常例外”的思路。
还有更常见的解决方案吗?还是认为这是惯用的?