Currently if an API URL that does not exist is requested, an html page is returned instead of JSON

**Apache Airflow version**:2.0

**What happened**:
Making a request against an endpoint that does not exist returns an html page

**What you expected to happen**:

I expected it to return 404 error in JSON indicating that the URL was not found

**How to reproduce it**:
1. Start airflow website and scheduler in breeze.
2. Make a request against an endpoint that does not exist e.g http://localhost:28080/api/v1/getconnectiond
3. Notice that an html page is returned instead of a json
cc: @mik-laj 

airflow/api_connexion/exceptions.py
"""Raise when the user does not have the required permissions"""
    def __init__(
        self, title: str = 'Forbidden', detail: Optional[str] = None, headers: Optional[Dict] = None, **kwargs
    ):
        super().__init__(
            status=403, type=EXCEPTIONS_LINK_MAP[403], title=title, detail=detail, headers=headers, **kwargs
        )
class AlreadyExists(ProblemException):
    """Raise when the object already exists"""
    def __init__(
        self, title='Conflict', detail: Optional[str] = None, headers: Optional[Dict] = None, **kwargs
    ):
        super().__init__(
            status=409, type=EXCEPTIONS_LINK_MAP[409], title=title, detail=detail, headers=headers, **kwargs
        )
class Unknown(ProblemException):
    """Returns a response body and status code for HTTP 500 exception"""
    def __init__(
        self,
        title: str = 'Internal Server Error',
        detail: Optional[str] = None,
        headers: Optional[Dict] = None,
        **kwargs,
    ):
        super().__init__(
            status=500, type=EXCEPTIONS_LINK_MAP[500], title=title, detail=detail, headers=headers, **kwargs
        )