Python Materials For Beginners
454 subscribers
39 photos
1 video
9 files
151 links
Download Telegram
🔶 Requests. POST form-urlencoded

POST використовується для створення ресурсів або надсилання даних на сервер. Дані передаються у тілі запиту, а не у URL (як при GET).

Є різні типи POST-запитів:

🔺 application/x-www-form-urlencoded – дані форми кодуються у вигляді param1=value1&param2=value2
🔺 application/json – дані у вигляді json
🔺 multipart/form-data – форми з файлами.

Даний приклад демонструє передачу даних форми (form-urlencoded)
Бібліотека автоматично виставляє заголовок відповідно до типу:

Content-Type: application/x-www-form-urlencoded

Форми часто використовується для авторизації на сайтах: у даних передаються логін і пароль. Але у даному випадку ми передаємо текст і розмір картинки, а сайт повертає нам QR-код картинку.

import requests

url = "https://api.qrserver.com/v1/create-qr-code/"

data = {
"data": "Привіт світ!",
"size": "200x200"
}

response = requests.post(url, data=data)
response.raise_for_status()

with open("qr_code.png", "wb") as file:
file.write(response.content)

#http #requests #POST
👍2
🔷 Requests. POST application/json

POST/application-json використовується для надсилання json даних на сервер (REST API)

Замість параметру data треба використовувати параметр json
У цьому випадку бібліотека requests виставляє заголовок:

Content-Type: application/json

Реальне API мені не вдалось знайти тому використаємо для прикладу тестове API:
import requests

url = "https://jsonplaceholder.typicode.com/posts"

json_payload = {
"title": "foo",
"body": "bar",
"userId": 1
}

response = requests.post(url, json=json_payload)
response.raise_for_status()

print(response.status_code)
print(response.json())


201
{'title': 'foo', 'body': 'bar', 'userId': 1, 'id': 101}


⚠️ Зверніть увагу що статус кодом який повертається може бути 201, а не 200 що відповідає створенню ресурсу.

Основні статус коди

#http #requests #POST
👍1
🔶 Requests. POST multipart/form-data

multipart/form-data використовується у формах з надсилання файлів на сервер.
У цьому випадку бібліотека requests виставляє заголовок:

Content-Type: multipart/form-data; boundary=...

Для прикладу завантажимо наш qrcode з попереднього прикладу на файлообмінник.
Також будемо вдавати браузер Mozilla.

Для відправки файлів використовується словник files з вказанням:

1️⃣ назви файлу
2️⃣ самого файлу
3️⃣ типу файлу

import requests

with open("qr_code.png", "rb") as file:
url = "https://catbox.moe/user/api.php"

files = {
"fileToUpload": ("qr_code.png", file, "image/png"),
}
data = {
"reqtype": "fileupload",
"userhash": "",
}
headers = {
"User-Agent" : "Mozilla/5.0 "
"(Windows NT 10.0; Win64; x64; rv:142.0)"
"Gecko/20100101 Firefox/142.0"
}
r = requests.post(url, files=files, data=data, headers=headers)
r.raise_for_status()
print(r.text.strip()) # вивод url

https://files.catbox.moe/lmcc82.png


#http #requests #POST
👎1