Python - wysyłanie żądań do serwera

Stronę tą wyświetlono już: 1416 razy

Moduł request umożliwia wysyłanie żądań do serwera, lecz zanim przejdę do sedna konieczne jest doinstalowanie tego modułu za pomocą pip co też i z najdzikszą rozkoszą czynię wpisując w konsoli systemowej polecenie:

pip install requests

Skutkujące zainstalowaniem i wyświetleniem następujących danych w konsoli:

pip install requests
Collecting requests
  Downloading https://files.pythonhosted.org/packages/51/bd/23c926cd341ea6b7dd0b2a00aba99ae0f828be89d72b2190f27c11d4b7fb/requests-2.22.0-py2.py3-none-any.whl (57kB)
     |                                | 61kB 328kB/s
Collecting chardet<3.1.0,>=3.0.2 (from requests)
  Downloading https://files.pythonhosted.org/packages/bc/a9/01ffebfb562e4274b6487b4bb1ddec7ca55ec7510b22e4c51f14098443b8/chardet-3.0.4-py2.py3-none-any.whl (133kB)
     |                                | 143kB 652kB/s
Collecting urllib3!=1.25.0,!=1.25.1,<1.26,>=1.21.1 (from requests)
  Downloading https://files.pythonhosted.org/packages/b4/40/a9837291310ee1ccc242ceb6ebfd9eb21539649f193a7c8c86ba15b98539/urllib3-1.25.7-py2.py3-none-any.whl (125kB)
     |                                | 133kB 656kB/s
Collecting certifi>=2017.4.17 (from requests)
  Downloading https://files.pythonhosted.org/packages/b9/63/df50cac98ea0d5b006c55a399c3bf1db9da7b5a24de7890bc9cfd5dd9e99/certifi-2019.11.28-py2.py3-none-any.whl (156kB)
     |                                | 163kB 547kB/s
Collecting idna<2.9,>=2.5 (from requests)
  Downloading https://files.pythonhosted.org/packages/14/2c/cd551d81dbe15200be1cf41cd03869a46fe7226e7450af7a6545bfc474c9/idna-2.8-py2.py3-none-any.whl (58kB)
     |                                | 61kB 391kB/s
Installing collected packages: chardet, urllib3, certifi, idna, requests

Teraz już można się poddać niekończącej się rozkoszy pisania kodu żądania:

Listing 1
  1. import requests
  2. url = 'http://localhost/add_record'
  3. headers = {'content-length': '108','Content-Type': 'application/json'}
  4. body = """{
  5. "value": 100,
  6. "description": "luty"
  7. }"""
  8. req = requests.post(url, headers=headers, data=body)
  9. print(req.status_code)
  10. print(req.headers)
  11. print(req.text)

Zatrważającym wynikiem działania powyższego kodu powinno być:

200
{'Date': 'Sun, 12 Jan 2020 06:09:42 GMT', 'Server': 'Apache/2.4.41 (Win64) OpenSSL/1.1.1c PHP/7.3.12', 'X-Powered-By': 'PHP/7.3.12', 'Access-Control-Allow-Origin': 'http://localhost/', 'Access-Control-Allow-Methods': 'POST', 'Access-Control-Max-Age': '3600', 'Access-Control-Allow-Headers': 'Content-Type, Access-Control-Allow-Headers, Authorization, X-Requested-With', 'Content-Length': '31', 'Keep-Alive': 'timeout=5, max=100', 'Connection': 'Keep-Alive', 'Content-Type': 'application/json; charset=UTF-8'}
{"message":"Data send successfully."}

Moduł request umożliwia również wysyłanie żądań:

  • GET - wysyłanie żądania po dane;
  • POST - wysyłanie żądania utworzenia nowego wpisu danych;
  • PUT - wysłanie żądania nadpisania istniejących danych wysłanymi do serwera (wymaga przekazania np. id identyfikującego wpis w bazie danych);
  • DELETE - wysyłanie żądania po usunięcie wpisu z bazy danych;
  • PATCH - służy do nadpisywania danych, które po stronie serwera powinny być wykonywane jedynie wtedy, gdy nastąpiła w nich zmiana. Czyli nadpisuje dane ale pod warunkiem, że te, które zostały otrzymane zostały zmodyfikowane;
  • HEAD - służy do wysyłania zapytania zawierającego tylko nagłówek bez ciała w celu sprawdzenia, czy dany zasób jest dostępny;
  • CONNECT - służy do nawiązania połączenia z serwerem;
  • OPTIONS - powinno zwracać listę żądań obsługiwanych przez serwer;
Propozycje książek

Komentarze