Python - HTTP Yanıtı

Http veya Köprü Metni Aktarım Protokolü, istemci sunucu modelinde çalışır. Genellikle web tarayıcısı istemcidir ve web sitesini barındıran bilgisayar sunucudur. İstemciden bir talep alındığında, sunucu bir yanıt oluşturur ve bunu istemciye belirli bir formatta geri gönderir.

Bir istek mesajını aldıktan ve yorumladıktan sonra, bir sunucu bir HTTP yanıt mesajıyla yanıt verir:


     
  • A Status-line
  • Zero or more header (General|Response|Entity) fields followed by CRLF
  • An empty line (i.e., a line with nothing preceding the CRLF) indicating the end of the header fields
  • Optionally a message-body

Aşağıdaki bölümler, bir HTTP yanıt mesajında ​​kullanılan varlıkların her birini açıklamaktadır.

Mesaj Durum-Satırı

Bir Durum Satırı, protokol versiyonunun ardından sayısal bir durum kodu ve bununla ilişkili metinsel ifadeden oluşur. Öğeler boşluk SP karakterleriyle ayrılır.

Status-Line = HTTP-Version SP Status-Code SP Reason-Phrase CRLF

HTTP Sürümü

HTTP sürüm 1.1'i destekleyen bir sunucu aşağıdaki sürüm bilgilerini döndürür:

HTTP-Version = HTTP/1.1

Durum kodu

Durum Kodu öğesi, Durum Kodunun ilk basamağının yanıt sınıfını tanımladığı ve son iki basamağın herhangi bir kategorizasyon rolüne sahip olmadığı 3 basamaklı bir tam sayıdır. İlk hane için 5 değer vardır:

SN Kod ve Açıklama
1 1xx: Informational

Bu, talebin alındığı ve sürecin devam ettiği anlamına gelir.

2 2xx: Success

Eylemin başarıyla alındığı, anlaşıldığı ve kabul edildiği anlamına gelir.

3 3xx: Redirection

Talebin tamamlanması için daha fazla işlem yapılması gerektiği anlamına gelir.

4 4xx: Client Error

Bu, isteğin yanlış sözdizimi içerdiği veya yerine getirilemeyeceği anlamına gelir.

5 5xx: Server Error

Bu, sunucunun görünüşte geçerli bir isteği yerine getiremediği anlamına gelir.

HTTP durum kodları genişletilebilir ve HTTP uygulamalarının kayıtlı tüm durum kodlarının anlamını anlaması gerekmez.

Python İsteklerini Kullanma

Aşağıdaki python programında urllib3 modülünü http GET isteği yapmak ve veriyi içeren yanıtı almak için kullanıyoruz. Aynı zamanda modüldeki fonksiyonlar tarafından da yönetilen yanıt kodunu sağlar. PoolManager nesnesi, bağlantı havuzunun tüm ayrıntılarını işler ve ayrıca iş parçacığı güvenliğini de işler.

import urllib3
http = urllib3.PoolManager()
resp = http.request('GET', 'http://tutorialspoint.com/robots.txt')
print resp.data
# get the status of the response
print resp.status

Yukarıdaki programı çalıştırdığımızda aşağıdaki çıktıyı alıyoruz -

User-agent: *
Disallow: /tmp
Disallow: /logs
Disallow: /rate/*
Disallow: /cgi-bin/*
Disallow: /videotutorials/video_course_view.php?*
Disallow: /videotutorials/course_view.php?*
Disallow: /videos/*
Disallow: /*/*_question_bank/*
Disallow: //*/*/*/*/src/*
200