Search code examples
pythonswaggeropenapidocumentation-generationfastapi

How to generate response decriptions in FastAPI


I want to generate a description of all available responses (along with code 200 example), which are represented in the code, like here.

from typing import Any

import uvicorn
from fastapi import FastAPI, HTTPException

router = FastAPI()
from pydantic import BaseModel

class FileItemBase(BaseModel):
    current_project: str = "Test project"

class FileItemInDBBase(FileItemBase):
    id: int
    folder_path: str

    class Config:
        orm_mode = True

class FileResponse(FileItemInDBBase):
    pass

@router.get("/", response_model=FileResponse)
def example_code() -> Any:
    """
    # beautiful description
    to demonstrate functionality
    """
    demo=True
    if demo:
        raise HTTPException(418, "That is a teapot.")
if __name__ =="__main__":
    uvicorn.run(router)

What I got with this is such a description.

description example

When I try this out - I got an error response (as expected).

response

What I want - is the description of an error included in the example responses, like here. A Frontend-developer can look at this description and process such cases in the right way without testing the API.

what I want to suceed

I know how it can be made within OpenAPI specs.

Is there a way to generate this description with FastAPI?


Solution

  • You can add a responses parameter to your path operation.

    Then you can pass your model there. It will create a schema for that model.

    class FileItemBase(BaseModel):
        current_project: str = "Test project"
    
    
    @app.get("/", response_model=FileItemBase, responses={418: {"model": FileItemBase}})
    def example_code():
        """
        # beautiful description
        to demonstrate functionality
        """
        demo = True
        if demo:
            raise HTTPException(418, "That is a teapot.")
    

    enter image description here