-
-
Notifications
You must be signed in to change notification settings - Fork 528
Open
Description
-
Reduce a bit of boilerplate and allow HttpError exceptions to be used in
responses
forninja.router.Router.api_operation
-
Also more tightly couples the openapi documentation to the code implementation*
- *depending on how implemented
For the most common use case: define a custom exception, and just use default exception handler
Current
from ninja import NinjaAPI, Schema
from ninja.errors import HttpError
from ninja.responses import codes_2xx
api = NinjaAPI()
class RequestErrorResponse(Schema):
detail: str
class RequestError(HttpError):
status_code = 400
message = "Request Error"
@api.get(
"/manual_responses",
response={
codes_2xx: str,
400: RequestErrorResponse,
},
)
def manual_responses(request): ...
Proposed
from ninja import NinjaAPI
from ninja.errors import HttpError
from ninja.responses import codes_2xx
api = NinjaAPI()
class RequestError(HttpError):
status_code = 400
message = "Request Error"
@api.get(
"/excs_in_responses",
response={codes_2xx: str, 400: RequestError},
)
def excs_in_responses(request): ...
Similar discussion in fastapi: fastapi/fastapi#9124
OscarVanL
Metadata
Metadata
Assignees
Labels
No labels