HTTP-методы GET и POST — самые распространённые способы отправить или получить данные с сервера.



🐍🐍🐍



GET — метод для чтения данных с сайта. Например, для доступа к указанной странице. Он говорит серверу, что клиент хочет прочитать указанный документ. GET параметры пишутся непосредственно в URL адресе, после знака ? через &



Например:



http://site.ru/enter.php?user=Vasya&pass=Super123



GET-запросы лучше не использовать с приватной информацией. Вот почему:



Они кэшируются. Это значит, что логин и пароль, переданные через GET-запрос, могут остаться в интернете навсегда, например, в веб-архиве или кэше Гугла.



Остаются в истории браузера. Чтобы узнать, какие данные отправлялись, достаточно нажать Ctrl+H.



Сохраняются в закладках и пересылаются. Можно не обратить внимания и опубликовать в соцсетях или отправить ссылку с приватной информацией в GET-запросе.



Сохраняются в логах сервера. Например, нельзя отправлять данные банковских карт через GET-запрос, так как это создаёт риски для пользователей.



import requests



# Попробуем получить какую-нибудь HTML страницу из интернета

# Для этого используем GET запрос к адресу этой страницы



# Дадим GET запрос

s = requests.get('https://habr.com')

# Распечатаем код ответа сервера

print(s.status_code)

# Распечатаем HTML код страницы

print(s.text)



——————————————



POST — метод для отправки данных на сайт. Чаще всего с помощью метода POST передаются формы с какими то заполненными полями.



Любые важные данные — логины, пароли, данные карты, персональные данные — лучше передавать с помощью метода POST. Также метод POST поддерживает тип кодирования данных multipart/form-data, что позволяет передавать файлы.



import requests



# POST запрос с параметрами

dict1 = {'key1': 'value1', 'key2': 'value2'}

r = requests.post("https://httpbin.org/post", data = dict1)

print(r.text)



———————



import requests



# Отправка файла на сайт POST запросом

# файл test.txt должен существовать в папке со скриптом

url = 'https://httpbin.org/post'

dict1 = {'key1': 'value1', 'key2': 'value2'}

files = {'file': open('test.txt', 'rb')}

r = requests.post(url, files=files, data=dict1)

print(r.text)



#code