1. 直接抛内置异常
django ninja内置了一些常用异常类。
from ninja.errors import httperror
@api.get("/some/resource")
def some_operation(request):
if true:
raise httperror(503, "service unavailable. please retry later.")
2. 覆写异常类
可以覆写内置异常类的handler,改变返回结果的内容。
from ninja.errors import validationerror
...
@api.exception_handler(validationerror)
def validation_errors(request, exc):
return httpresponse("invalid input", status=422)
3. 自定义异常类
以创建一个500服务不可用异常类为例。
要实现这一点,你需要:
- 自定义一个serviceunavailableerror
- 使用
api.exception_handler为serviceunavailableerror异常添加一个处理函数
api = ninjaapi()
class serviceunavailableerror(exception):
pass
# initializing handler
@api.exception_handler(serviceunavailableerror)
def service_unavailable(request, exc):
return api.create_response(
request,
{"message": "please retry later"},
status=503,
)
# some logic that throws exception
@api.get("/service")
def some_operation(request):
if random.choice([true, false]):
raise serviceunavailableerror()
return {"message": "hello"}总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持代码网。
发表评论