I am trying to send a post request with both data and JSON fields, such as:
my_df = pd.read_csv('test.csv')
pickled = pickle.dumps(my_df)
pickled_b64 = base64.b64encode(pickled)
my_name = "my_csv_name.csv"
r = requests.post('http://localhost:5003/rcvdf', data = pickled_b64, json= {"name": my_name})
Notice that pickled_b64 is of type 'bytes'.
But on the other end, I get only the data and no JSON at all:
@api.route('/rcvdf', methods=['POST'])
def test_1():
data_pickeled_b64_string = request.data
json_data = request.json #This is None
Is it even possible to pass two variables in such a way?
--edit
Solution
thanks to the comments I tried different approach - and passed the variable by headers:
Sending Side:
my_name = "my_csv.csv"
r = requests.post('http://localhost:5003/rcvdf', data=pickled_b64, headers={"name": my_name})
Receiving Side:
@app.route('/rcvdf', methods=['POST'])
def rcvdf():
data_pickeled_b64_string = request.data
name = request.headers['name']