浏览代码

Merge pull request #72 from algoo/feature/flask_error_handler

Bastien Sevajol 6 年前
父节点
当前提交
379d16ccf3
没有帐户链接到提交者的电子邮件
共有 2 个文件被更改,包括 18 次插入2 次删除
  1. 2 1
      hapic/context.py
  2. 16 1
      hapic/ext/flask/context.py

+ 2 - 1
hapic/context.py 查看文件

@@ -206,8 +206,9 @@ class BaseContext(ContextInterface):
206 206
                             exc,
207 207
                             include_traceback=self.is_debug(),
208 208
                         )
209
+                        dumped = error_builder.dump(error_body).data
209 210
                         return self.get_response(
210
-                            json.dumps(error_body),
211
+                            json.dumps(dumped),
211 212
                             handled_exception.http_code,
212 213
                         )
213 214
                 raise exc

+ 16 - 1
hapic/ext/flask/context.py 查看文件

@@ -166,7 +166,22 @@ class FlaskContext(BaseContext):
166 166
         exception_class: typing.Type[Exception],
167 167
         http_code: int,
168 168
     ) -> None:
169
-        raise NotImplementedError('TODO')
169
+        def return_response_error(exc):
170
+            error_builder = self.get_default_error_builder()
171
+            error_body = error_builder.build_from_exception(
172
+                exc,
173
+                include_traceback=self.is_debug(),
174
+            )
175
+            dumped = error_builder.dump(error_body).data
176
+            return self.get_response(
177
+                json.dumps(dumped),
178
+                http_code,
179
+            )
180
+
181
+        self.app.register_error_handler(
182
+            exception_class,
183
+            return_response_error,
184
+        )
170 185
 
171 186
     def is_debug(self) -> bool:
172 187
         return self.debug