Search code examples
pythonjsonpostmanfastapi

"There was an error parsing the body" error on requesting endpoint in FastAPI


I have implemented a endpoint in FastAPI and I am testing it from Postman. But whenever I send request I get this error "There was an error parsing the body", while searching for the error I found a solution somewhere that I need to have python-multipart installed, this package is already installed but I am still facing this error. Following is my code:

@router.put('/user')
def update_user(user_data: dict):
    from crain.uma import update_user
    user_id = user_data['id']
    update_user(user_id, user_data)
    return {"message": "DONE"}

The endpoint except a dict like this:

user_data =    {
      "username":"admin",
      "id":"2d06aa3b-c25a-4499-948a-86341ac4adc5",
      "email":null,
      "firstName":"admin",
      "lastName":"admin",
      "createdTimestamp":1638268009973
   },

enter image description here enter image description here


Solution

  • in postman switch to raw data (currently you are in form-data).
    then insert your desired payload:

    {
          "username":"admin",
          "id":"2d06aa3b-c25a-4499-948a-86341ac4adc5",
          "email":null,
          "firstName":"admin",
          "lastName":"admin",
          "createdTimestamp":1638268009973
    }
    

    and fire the request.

    BTW, when you say

    The endpoint except a dict like this:

    user_data = {  
          "username":"admin",  
          "id":"2d06aa3b-c25a-4499-948a-86341ac4adc5",  
          "email":null,  
          "firstName":"admin",  
          "lastName":"admin",  
          "createdTimestamp":1638268009973
    },
    

    you actually mean the endpoint expect only the dictionary part, because user_data is simply a variable name in your python code, completely unrelated to any request configuration.
    the reason i specify it is because you wrote it as a key you the postman's request form-data (the picture you uploaded)