从服务返回 HTTP 响应而不耦合到 Falcon 模块
Returning HTTP responses from service without coupling to Falcon modules
我正在构建我的用户服务,并试图将其与 API 分离。当用户服务遇到错误时,它会按照以下格式在服务上设置一个错误属性:
{
'message': '<user friendly error message>',
'code': '<http code>'
}
但是,我根本不想在服务中引用 falcon,所以实际上它看起来像这样:
self.error = {
'message': 'Duplicate Email',
'code': 409
}
return False
现在,一旦将其 return 编辑到 API,我需要将其转换为 falcon.HTTP_XXX 对象,这是在以数字为键并以猎鹰对象为参考的路线?如:
responses = {
409: falcon.HTTP_409
400: falcon.HTTP_400
}
然后从用户服务中获取 return 然后解析对象将错误编号作为索引传递?
喜欢:
user = self.user_service.get_user()
if not user:
resp.status = responses[self.user_service.error.code]
return
居然自己找到了解决方案
Falcon 没有将响应存储在字典中,而是提供了一个从整数解析状态的实用程序。
falcon.get_http_status(self.user_service.error.code)
https://falcon.readthedocs.io/en/stable/_modules/falcon/util/misc.html#get_http_status
我正在构建我的用户服务,并试图将其与 API 分离。当用户服务遇到错误时,它会按照以下格式在服务上设置一个错误属性:
{
'message': '<user friendly error message>',
'code': '<http code>'
}
但是,我根本不想在服务中引用 falcon,所以实际上它看起来像这样:
self.error = {
'message': 'Duplicate Email',
'code': 409
}
return False
现在,一旦将其 return 编辑到 API,我需要将其转换为 falcon.HTTP_XXX 对象,这是在以数字为键并以猎鹰对象为参考的路线?如:
responses = {
409: falcon.HTTP_409
400: falcon.HTTP_400
}
然后从用户服务中获取 return 然后解析对象将错误编号作为索引传递? 喜欢:
user = self.user_service.get_user()
if not user:
resp.status = responses[self.user_service.error.code]
return
居然自己找到了解决方案
Falcon 没有将响应存储在字典中,而是提供了一个从整数解析状态的实用程序。
falcon.get_http_status(self.user_service.error.code)
https://falcon.readthedocs.io/en/stable/_modules/falcon/util/misc.html#get_http_status