Bartłomiej 'furas' Burek
furas.pl
# prywatne notatki - Python, Linux, Machine Learning, etc.

Use Requsts to send data to Flask [GB]

This code will display different data from requests to show how flask get them.

from flask import Flask, request

app = Flask(__name__)

@app.route("/", methods=['GET', 'POST'])
def index():
    print('args:', request.args)
    print('form:', request.form)
    print('json:', request.json)
    print('data:', request.data)
    return ''

if __name__ == '__main__':
    app.run()

Send as args in url - params=

import requests

data = {'text': 'Hello', 'value': 100}

r = requests.get('http://localhost:5000/', params=data)
#r = requests.post('http://localhost:5000/', params=data)

Result:

args: ImmutableMultiDict([('text', 'Hello'), ('value', '100')])
form: ImmutableMultiDict([])
json: None
data: b''
files: ImmutableMultiDict([])

params= is used mostly with get() but it can be used also in post()


Send as form data - data=

import requests

data = {'text': 'Hello', 'value': 100}

#r = requests.get('http://localhost:5000/', data=data)
r = requests.post('http://localhost:5000/', data=data)

Result:

args: ImmutableMultiDict([])
form: ImmutableMultiDict([('text', 'Hello'), ('value', '100')])
json: None
data: b''
files: ImmutableMultiDict([])

data= is used mostly with post() but it can be used also in get()


Send as JSON data - json=

import requests

data = {'text': 'Hello', 'value': 100}

#r = requests.get('http://localhost:5000/', json=data)
r = requests.post('http://localhost:5000/', json=data)

Result:

args: ImmutableMultiDict([])
form: ImmutableMultiDict([])
json: {'text': 'Hello', 'value': 100}
data: b'{"text": "Hello", "value": 100}'
files: ImmutableMultiDict([])

json= is used mostly with post() but it can be used also in get()


Send as files data - files=

import requests

data = {'text': 'Hello', 'value': 100}

#r = requests.get('http://localhost:5000/', files=data)
r = requests.post('http://localhost:5000/', files=data)

Result:

args: ImmutableMultiDict([])
form: ImmutableMultiDict([])
json: None
data: b''
files: ImmutableMultiDict([('text', <FileStorage: 'text' (None)>), ('value', <FileStorage: 'value' (None)>)])

files= is used mostly with post() but it can be used also in get()


You can see data also if you display request's body

import requests

data = {'text': 'Hello', 'value': 100}

r = requests.post('https://httpbin.org/post', data=data)
print('form:', r.request.body)

r = requests.post('https://httpbin.org/post', json=data)
print('json:', r.request.body)

r = requests.post('https://httpbin.org/post', files=data)
print('file:', r.request.body)

Result:

form: text=Hello&value=100
json: b'{"text": "Hello", "value": 100}'
file: b'--2a0f189d55cfce27736cb0ce44d8621b\r\nContent-Disposition: form-data; name="text"; filename="text"\r\n\r\nHello\r\n--2a0f189d55cfce27736cb0ce44d8621b\r\nContent-Disposition: form-data; name="value"; filename="value"\r\n\r\n100\r\n--2a0f189d55cfce27736cb0ce44d8621b--\r\n'
Książki: python-dla-kazdego-podstawy-programowania python-wprowadzenie python-leksykon-kieszonkowy python-receptury python-programuj-szybko-i-wydajnie python-projekty-do-wykorzystania black-hat-python-jezyk-python-dla-hackerow-i-pentesterow efektywny-python-59-sposobow-na-lepszy-kod tdd-w-praktyce-niezawodny-kod-w-jezyku-python aplikacje-internetowe-z-django-najlepsze-receptury