Python REST-API antwortet immer mit 400

RegShoe

Cadet 4th Year
Registriert
Aug. 2023
Beiträge
108
Hallo,

ich versuche mich grade das erste Mal mit der Abfrage einer REST-API mit der requests-oauthlib.

Allerdings mach ich wohl bei meiner Anfrage selbst einen Fehler

Als erstes Mal geht es um diese API https://etimapi.etim-international.com/swagger/index.html.

Mein JSON sieht so aus:
Python:
request_data = json.dumps({"From": 0,
    "Size": 100,
    "Languagecode": "de-DE"
    })
Beispiel hab ich von hier https://bitbucket.org/3xt/etimapi-rest-client/src/master/v2.0/Class.http

Die Anfrage mach ich wie folgt
Python:
    client = BackendApplicationClient(client_id=settings.ETIM_CLIENT_ID)
    etim = OAuth2Session(client=client, scope='EtimApi')
    etim.fetch_token(token_url=f'{settings.ETIM_AUTH_URL}/connect/token', client_id=settings.ETIM_CLIENT_ID,
                                client_secret=settings.ETIM_CLIENT_SECRET)

    headers = {'Content-type': 'application/json'}
    response = etim.post(url=f'{settings.ETIM_BASE_URL}/api/v2.0/Class/Search', json=request_data, headers=headers)

Als Antwort bekomme ich dann:
Code:
b'{"type":"https://tools.ietf.org/html/rfc7231#section-6.5.1","title":"One or more validation errors occurred.","status":400,"traceId":"00-acb202df4ea0ef003e45327f6013c6e9-44ddb0f844efff5e-00","errors":{"$":["The JSON value could not be converted to Etim.Models.Elastic.EntitySearchInput. Path: $ | LineNumber: 0 | BytePositionInLine: 59."]}}'

Kann vielleicht jemand erkennen WO ich da den Fehler mache?

Danke
 
Ich interpretiere die Fehlermeldung so, dass was mit request_data nicht stimmt. Lass mal json.dumps weg, so dass request_data ein Dict und kein String ist.
 
:freak: Auf DIE Idee bin ich irgendwie gar nicht gekommen... Weil ich es so verstanden hab, dass die Anfrage als JSON gestellt werden soll... Aber ES GEHT!!! :daumen:

Vielen Dank für den Tip
 
Jo, aber die Codierung als JSON wird von Requests übernommen. So wurde es doppelt codiert, das Ergebnis dürfte folgendermaßen ausgesehen haben:
Code:
"{\"From\": 0, \"Size\": 100, \"Languagecode\": \"de-DE\"}"
 
  • Gefällt mir
Reaktionen: nutrix
Zurück
Oben