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

Użycie Requsts do wysłania danych do Flask

Ten kod wyświetli różne dane przysłane z requests aby pokazać jak je odebrać we `flask``.

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()

Wysłanie jako argumenty w 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)

Wynik:

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

params= jest używany głównie w get() ale może być także użyte w post()


Wysłanie jako formularz - data=

import requests

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

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

Wynik:

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

data= jest używany głównie w post() ale może być także użyte w get()


Wysłanie jako JSON - json=

import requests

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

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

Wynik:

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

json= jest używany głównie w post() ale może być także użyte w get()


Wysłanie jako plik - files=

import requests

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

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

Wynik:

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

files= jest używany głównie w post() ale może być także użyte w get()


Dane można także zobaczyć jeśli się wyświetli dane requestu

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)

Wynik:

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