Python FastAPI Docs (Swagger) wie HTTPValidationError fixen?

Blackbenji

Lieutenant
Registriert
Nov. 2009
Beiträge
557
Hallo zusammen,

ich arbeite mich gerade in FastAPI ein und nutze dazu die integrierte "docs" Ansicht zum testen.

Als Beispiel habe ich folgenden Endpoint:
Python:
@api.get('/v1/crawler/file/{filename}', summary="Return file to crawl")
def crawler_file(filename: str):
    if filename is not None:
        if os.path.isfile(f"crawler_json/{filename}.json"):
            with open(f"crawler_json/{filename}.json") as f:
                return json.loads(f.read())
        else:
            return fastapi.HTTPException(status_code=404, detail="File not found")
    else:
        return fastapi.HTTPException(status_code=404, detail="filename is None")

Im openapi.json sieht das dann so aus:
JSON:
"/v1/crawler/file/{filename}":{
   "get":{
      "summary":"Create an item",
      "operationId":"crawler_file_v1_crawler_file__filename__get",
      "parameters":[
         {
            "required":true,
            "schema":{
               "title":"Filename",
               "type":"string"
            },
            "name":"filename",
            "in":"path"
         }
      ],
      "responses":{
         "200":{
            "description":"Successful Response",
            "content":{
               "application/json":{
                  "schema":{
                    
                  }
               }
            }
         },
         "422":{
            "description":"Validation Error",
            "content":{
               "application/json":{
                  "schema":{
                     "$ref":"#/components/schemas/HTTPValidationError"
                  }
               }
            }
         }
      }
   }
}

Unterhalb der Swagger-UI werden mir dann im Schema: HTTPValidationError und ValidationError angezeigt:
Code:
ValidationError{
loc*    Location[...]
msg*    string
title: Message
type*    string
title: Error Type
 
}

Leider finde ich dazu keine Hilfreiche Doku wie diese Fehler zu beseitigen sind?

Oder lässt sich das ignorieren?

Danke und viele Grüße,
Blackbenji
 
Unter responses ist doch aufgeführt, dass es sich bei 422 um den Validation Error handelt, ergo wenn deine API nicht richtig zugreift, dann bekommst du auch den jeweiligen Response-Wert.

Welches Package willst du eigentlich für fastAPI benutzen? Ich hab mit ein paar schlechte Erfahrungen gemacht, mein Tipp wäre Requests
 
Diese "errors" im swagger dolumentieren nur die errors und das ist auch gut so.
Die python bibliothek (FastApi) die du benutzt (kenne mich mit python nicht aus), macht en Standard-Error handling und das siehst du entsprechend dokumentiert.

Ein client der den service ansprecht sollte diese errors entsprechend behandeln oder zumindest damit rechnen.

Zum testen der api und zum importieren der swagger eignet sich "postman" hervorragend.
 
  • Gefällt mir
Reaktionen: Blackbenji
dermoritz schrieb:
Ein client der den service ansprecht sollte diese errors entsprechend behandeln oder zumindest damit rechnen.
okay vielen dank - dann habe ich die Errors bislang falsch verstanden. Dann ergibt es jetzt alles einen Sinn - Danke!
 
Zurück
Oben