Bagaimana cara mendapatkan header permintaan http dengan python?

Pustaka

>>> requests.get('https://api.github.com')
<Response [200]>
6 adalah standar de facto untuk membuat permintaan HTTP dengan Python. Ini mengabstraksi kerumitan pembuatan permintaan di balik API yang indah dan sederhana sehingga Anda dapat berfokus untuk berinteraksi dengan layanan dan menggunakan data dalam aplikasi Anda

Sepanjang artikel ini, Anda akan melihat beberapa fitur paling berguna yang ditawarkan

>>> requests.get('https://api.github.com')
<Response [200]>
6 serta cara menyesuaikan dan mengoptimalkan fitur tersebut untuk berbagai situasi yang mungkin Anda temui. Anda juga akan mempelajari cara menggunakan
>>> requests.get('https://api.github.com')
<Response [200]>
6 dengan cara yang efisien serta cara mencegah permintaan ke layanan eksternal memperlambat aplikasi Anda

Dalam tutorial ini, Anda akan mempelajari caranya

  • Buat permintaan menggunakan metode HTTP yang paling umum
  • Sesuaikan header dan data permintaan Anda, menggunakan string kueri dan isi pesan
  • Periksa data dari permintaan dan tanggapan Anda
  • Buat permintaan yang diautentikasi
  • Konfigurasikan permintaan Anda untuk membantu mencegah aplikasi Anda dicadangkan atau melambat

Meskipun saya telah mencoba memasukkan sebanyak mungkin informasi yang Anda perlukan untuk memahami fitur dan contoh yang disertakan dalam artikel ini, saya menganggap pengetahuan umum yang sangat mendasar tentang HTTP. Meskipun demikian, Anda mungkin masih bisa mengikuti dengan baik

Sekarang setelah selesai, mari selami dan lihat bagaimana Anda dapat menggunakan

>>> requests.get('https://api.github.com')
<Response [200]>
6 dalam aplikasi Anda

Ikuti Kuis. Uji pengetahuan Anda dengan kuis "Permintaan HTTP Dengan Perpustakaan" "permintaan" interaktif kami. Setelah selesai Anda akan menerima skor sehingga Anda dapat melacak kemajuan belajar Anda dari waktu ke waktu

Ikuti Kuis »

Memulai Dengan >>> requests.get('https://api.github.com') <Response [200]> 6

Mari kita mulai dengan menginstal pustaka

>>> requests.get('https://api.github.com')
<Response [200]>
6. Untuk melakukannya, jalankan perintah berikut

$ pip install requests
_

Jika Anda lebih suka menggunakan Pipenv untuk mengelola paket Python, Anda dapat menjalankan perintah berikut

$ pipenv install requests

Setelah

>>> requests.get('https://api.github.com')
<Response [200]>
6 diinstal, Anda dapat menggunakannya di aplikasi Anda. Mengimpor
>>> requests.get('https://api.github.com')
<Response [200]>
_6 terlihat seperti ini

import requests

Sekarang setelah Anda siap, saatnya untuk memulai perjalanan Anda melalui

>>> requests.get('https://api.github.com')
<Response [200]>
6. Tujuan pertama Anda adalah mempelajari cara membuat permintaan
>>> response = requests.get('https://api.github.com')
5

Hilangkan iklan

Permintaan GET

seperti

>>> response = requests.get('https://api.github.com')
5 dan
>>> response = requests.get('https://api.github.com')
7, tentukan tindakan yang ingin Anda lakukan saat membuat permintaan HTTP. Selain
>>> response = requests.get('https://api.github.com')
5 dan
>>> response = requests.get('https://api.github.com')
7, ada beberapa metode umum lainnya yang akan Anda gunakan nanti dalam tutorial ini

Salah satu metode HTTP yang paling umum adalah

>>> response = requests.get('https://api.github.com')
5. Metode
>>> response = requests.get('https://api.github.com')
_5 menunjukkan bahwa Anda mencoba untuk mendapatkan atau mengambil data dari sumber tertentu. Untuk membuat permintaan
>>> response = requests.get('https://api.github.com')
_5, aktifkan
>>> response.status_code
200
3

Untuk menguji ini, Anda dapat membuat permintaan

>>> response = requests.get('https://api.github.com')
_5 ke GitHub dengan menghubungi
>>> response.status_code
200
5 dengan URL berikut

>>> ________0______

Selamat. Anda telah membuat permintaan pertama Anda. Mari selami lebih dalam tanggapan dari permintaan itu

Responnya

>>> response.status_code
200
_6 adalah objek yang ampuh untuk memeriksa hasil permintaan. Mari buat permintaan yang sama lagi, tetapi kali ini simpan nilai yang dikembalikan dalam variabel sehingga Anda dapat melihat lebih dekat atribut dan perilakunya

>>>

>>> response = requests.get('https://api.github.com')
_

Dalam contoh ini, Anda telah mengambil nilai pengembalian

>>> response.status_code
200
5, yang merupakan turunan dari
>>> response.status_code
200
6, dan menyimpannya dalam variabel bernama
>>> response.status_code
200
9. Anda sekarang dapat menggunakan
>>> response.status_code
200
_9 untuk melihat banyak informasi tentang hasil permintaan
>>> response = requests.get('https://api.github.com')
5 Anda

Kode Status

Sedikit informasi pertama yang dapat Anda kumpulkan dari

>>> response.status_code
200
6 adalah kode status. Kode status memberi tahu Anda tentang status permintaan

Misalnya, status

if response.status_code == 200:
    print('Success!')
elif response.status_code == 404:
    print('Not Found.')
_3 berarti permintaan Anda berhasil, sedangkan status
if response.status_code == 200:
    print('Success!')
elif response.status_code == 404:
    print('Not Found.')
4 berarti sumber daya yang Anda cari tidak ditemukan. Ada banyak kemungkinan kode status lainnya untuk memberi Anda wawasan khusus tentang apa yang terjadi dengan permintaan Anda

Dengan mengakses

if response.status_code == 200:
    print('Success!')
elif response.status_code == 404:
    print('Not Found.')
_5, Anda dapat melihat kode status yang dikembalikan oleh server

>>>

>>> response.status_code
200
_

if response.status_code == 200:
    print('Success!')
elif response.status_code == 404:
    print('Not Found.')
5 mengembalikan
if response.status_code == 200:
    print('Success!')
elif response.status_code == 404:
    print('Not Found.')
7, yang berarti permintaan Anda berhasil dan server merespons dengan data yang Anda minta

Terkadang, Anda mungkin ingin menggunakan informasi ini untuk membuat keputusan dalam kode Anda

if response.status_code == 200:
    print('Success!')
elif response.status_code == 404:
    print('Not Found.')

Dengan logika ini, jika server mengembalikan kode status ________32______7, program Anda akan mencetak

if response.status_code == 200:
    print('Success!')
elif response.status_code == 404:
    print('Not Found.')
9. Jika hasilnya adalah
if response:
    print('Success!')
else:
    print('An error has occurred.')
_0, program Anda akan mencetak
if response:
    print('Success!')
else:
    print('An error has occurred.')
1

>>> requests.get('https://api.github.com')
<Response [200]>
6 selangkah lebih maju dalam menyederhanakan proses ini untuk Anda. Jika Anda menggunakan
>>> response.status_code
200
6 contoh dalam ekspresi bersyarat, itu akan dievaluasi menjadi
if response:
    print('Success!')
else:
    print('An error has occurred.')
4 jika kode status antara
if response.status_code == 200:
    print('Success!')
elif response.status_code == 404:
    print('Not Found.')
7 dan
if response:
    print('Success!')
else:
    print('An error has occurred.')
6, dan
if response:
    print('Success!')
else:
    print('An error has occurred.')
7 jika tidak

Oleh karena itu, Anda dapat menyederhanakan contoh terakhir dengan menulis ulang pernyataan

if response:
    print('Success!')
else:
    print('An error has occurred.')
8

if response:
    print('Success!')
else:
    print('An error has occurred.')

Detil Teknis. Hal ini dimungkinkan karena pada tanggal

>>> response.status_code
200
6

Ini berarti bahwa perilaku default

>>> response.status_code
200
_6 telah didefinisikan ulang untuk memperhitungkan kode status saat menentukan nilai kebenaran objek

Ingatlah bahwa metode ini tidak memverifikasi bahwa kode status sama dengan

if response.status_code == 200:
    print('Success!')
elif response.status_code == 404:
    print('Not Found.')
7. Alasan untuk ini adalah bahwa kode status lain dalam rentang
if response.status_code == 200:
    print('Success!')
elif response.status_code == 404:
    print('Not Found.')
7 hingga
if response:
    print('Success!')
else:
    print('An error has occurred.')
6, seperti
import requests
from requests.exceptions import HTTPError

for url in ['https://api.github.com', 'https://api.github.com/invalid']:
    try:
        response = requests.get(url)

        # If the response was successful, no Exception will be raised
        response.raise_for_status()
    except HTTPError as http_err:
        print(f'HTTP error occurred: {http_err}')  # Python 3.6
    except Exception as err:
        print(f'Other error occurred: {err}')  # Python 3.6
    else:
        print('Success!')
5 dan
import requests
from requests.exceptions import HTTPError

for url in ['https://api.github.com', 'https://api.github.com/invalid']:
    try:
        response = requests.get(url)

        # If the response was successful, no Exception will be raised
        response.raise_for_status()
    except HTTPError as http_err:
        print(f'HTTP error occurred: {http_err}')  # Python 3.6
    except Exception as err:
        print(f'Other error occurred: {err}')  # Python 3.6
    else:
        print('Success!')
6, juga dianggap berhasil dalam arti bahwa mereka memberikan respons yang dapat diterapkan

Misalnya,

import requests
from requests.exceptions import HTTPError

for url in ['https://api.github.com', 'https://api.github.com/invalid']:
    try:
        response = requests.get(url)

        # If the response was successful, no Exception will be raised
        response.raise_for_status()
    except HTTPError as http_err:
        print(f'HTTP error occurred: {http_err}')  # Python 3.6
    except Exception as err:
        print(f'Other error occurred: {err}')  # Python 3.6
    else:
        print('Success!')
_7 memberi tahu Anda bahwa respons berhasil, tetapi tidak ada konten untuk ditampilkan di badan pesan

Jadi, pastikan Anda menggunakan singkatan praktis ini hanya jika Anda ingin mengetahui apakah permintaan secara umum berhasil dan kemudian, jika perlu, tangani respons dengan tepat berdasarkan kode status

Katakanlah Anda tidak ingin memeriksa kode status respons dalam pernyataan

if response:
    print('Success!')
else:
    print('An error has occurred.')
8. Sebaliknya, Anda ingin mengajukan pengecualian jika permintaan tidak berhasil. Anda dapat melakukan ini menggunakan
import requests
from requests.exceptions import HTTPError

for url in ['https://api.github.com', 'https://api.github.com/invalid']:
    try:
        response = requests.get(url)

        # If the response was successful, no Exception will be raised
        response.raise_for_status()
    except HTTPError as http_err:
        print(f'HTTP error occurred: {http_err}')  # Python 3.6
    except Exception as err:
        print(f'Other error occurred: {err}')  # Python 3.6
    else:
        print('Success!')
_9

import requests
from requests.exceptions import HTTPError

for url in ['https://api.github.com', 'https://api.github.com/invalid']:
    try:
        response = requests.get(url)

        # If the response was successful, no Exception will be raised
        response.raise_for_status()
    except HTTPError as http_err:
        print(f'HTTP error occurred: {http_err}')  # Python 3.6
    except Exception as err:
        print(f'Other error occurred: {err}')  # Python 3.6
    else:
        print('Success!')

Jika Anda meminta

import requests
from requests.exceptions import HTTPError

for url in ['https://api.github.com', 'https://api.github.com/invalid']:
    try:
        response = requests.get(url)

        # If the response was successful, no Exception will be raised
        response.raise_for_status()
    except HTTPError as http_err:
        print(f'HTTP error occurred: {http_err}')  # Python 3.6
    except Exception as err:
        print(f'Other error occurred: {err}')  # Python 3.6
    else:
        print('Success!')
_9,
>>> response = requests.get('https://api.github.com')
>>> response.content
b'{"current_user_url":"https://api.github.com/user","current_user_authorizations_html_url":"https://github.com/settings/connections/applications{/client_id}","authorizations_url":"https://api.github.com/authorizations","code_search_url":"https://api.github.com/search/code?q={query}{&page,per_page,sort,order}","commit_search_url":"https://api.github.com/search/commits?q={query}{&page,per_page,sort,order}","emails_url":"https://api.github.com/user/emails","emojis_url":"https://api.github.com/emojis","events_url":"https://api.github.com/events","feeds_url":"https://api.github.com/feeds","followers_url":"https://api.github.com/user/followers","following_url":"https://api.github.com/user/following{/target}","gists_url":"https://api.github.com/gists{/gist_id}","hub_url":"https://api.github.com/hub","issue_search_url":"https://api.github.com/search/issues?q={query}{&page,per_page,sort,order}","issues_url":"https://api.github.com/issues","keys_url":"https://api.github.com/user/keys","notifications_url":"https://api.github.com/notifications","organization_repositories_url":"https://api.github.com/orgs/{org}/repos{?type,page,per_page,sort}","organization_url":"https://api.github.com/orgs/{org}","public_gists_url":"https://api.github.com/gists/public","rate_limit_url":"https://api.github.com/rate_limit","repository_url":"https://api.github.com/repos/{owner}/{repo}","repository_search_url":"https://api.github.com/search/repositories?q={query}{&page,per_page,sort,order}","current_user_repositories_url":"https://api.github.com/user/repos{?type,page,per_page,sort}","starred_url":"https://api.github.com/user/starred{/owner}{/repo}","starred_gists_url":"https://api.github.com/gists/starred","team_url":"https://api.github.com/teams","user_url":"https://api.github.com/users/{user}","user_organizations_url":"https://api.github.com/user/orgs","user_repositories_url":"https://api.github.com/users/{user}/repos{?type,page,per_page,sort}","user_search_url":"https://api.github.com/search/users?q={query}{&page,per_page,sort,order}"}'
1 akan dimunculkan untuk kode status tertentu. Jika kode status menunjukkan permintaan yang berhasil, program akan melanjutkan tanpa pengecualian itu dimunculkan

Bacaan lebih lanjut. Jika Anda tidak terbiasa dengan Python 3. F-string 6, saya mendorong Anda untuk memanfaatkannya karena ini adalah cara yang bagus untuk menyederhanakan string yang telah diformat

Sekarang, Anda tahu banyak tentang cara menangani kode status dari respons yang Anda dapatkan kembali dari server. Namun, saat Anda membuat permintaan

>>> response = requests.get('https://api.github.com')
_5, Anda jarang hanya peduli dengan kode status respons. Biasanya, Anda ingin melihat lebih banyak. Selanjutnya, Anda akan melihat cara melihat data aktual yang dikirim kembali oleh server dalam isi respons

Hilangkan iklan

Isi

Tanggapan dari permintaan

>>> response = requests.get('https://api.github.com')
_5 sering memiliki beberapa informasi berharga, yang dikenal sebagai payload, di badan pesan. Menggunakan atribut dan metode
>>> response.status_code
200
6, Anda dapat melihat muatan dalam berbagai format berbeda

Untuk melihat konten tanggapan di

>>> response = requests.get('https://api.github.com')
>>> response.content
b'{"current_user_url":"https://api.github.com/user","current_user_authorizations_html_url":"https://github.com/settings/connections/applications{/client_id}","authorizations_url":"https://api.github.com/authorizations","code_search_url":"https://api.github.com/search/code?q={query}{&page,per_page,sort,order}","commit_search_url":"https://api.github.com/search/commits?q={query}{&page,per_page,sort,order}","emails_url":"https://api.github.com/user/emails","emojis_url":"https://api.github.com/emojis","events_url":"https://api.github.com/events","feeds_url":"https://api.github.com/feeds","followers_url":"https://api.github.com/user/followers","following_url":"https://api.github.com/user/following{/target}","gists_url":"https://api.github.com/gists{/gist_id}","hub_url":"https://api.github.com/hub","issue_search_url":"https://api.github.com/search/issues?q={query}{&page,per_page,sort,order}","issues_url":"https://api.github.com/issues","keys_url":"https://api.github.com/user/keys","notifications_url":"https://api.github.com/notifications","organization_repositories_url":"https://api.github.com/orgs/{org}/repos{?type,page,per_page,sort}","organization_url":"https://api.github.com/orgs/{org}","public_gists_url":"https://api.github.com/gists/public","rate_limit_url":"https://api.github.com/rate_limit","repository_url":"https://api.github.com/repos/{owner}/{repo}","repository_search_url":"https://api.github.com/search/repositories?q={query}{&page,per_page,sort,order}","current_user_repositories_url":"https://api.github.com/user/repos{?type,page,per_page,sort}","starred_url":"https://api.github.com/user/starred{/owner}{/repo}","starred_gists_url":"https://api.github.com/gists/starred","team_url":"https://api.github.com/teams","user_url":"https://api.github.com/users/{user}","user_organizations_url":"https://api.github.com/user/orgs","user_repositories_url":"https://api.github.com/users/{user}/repos{?type,page,per_page,sort}","user_search_url":"https://api.github.com/search/users?q={query}{&page,per_page,sort,order}"}'
5, gunakan
>>> response = requests.get('https://api.github.com')
>>> response.content
b'{"current_user_url":"https://api.github.com/user","current_user_authorizations_html_url":"https://github.com/settings/connections/applications{/client_id}","authorizations_url":"https://api.github.com/authorizations","code_search_url":"https://api.github.com/search/code?q={query}{&page,per_page,sort,order}","commit_search_url":"https://api.github.com/search/commits?q={query}{&page,per_page,sort,order}","emails_url":"https://api.github.com/user/emails","emojis_url":"https://api.github.com/emojis","events_url":"https://api.github.com/events","feeds_url":"https://api.github.com/feeds","followers_url":"https://api.github.com/user/followers","following_url":"https://api.github.com/user/following{/target}","gists_url":"https://api.github.com/gists{/gist_id}","hub_url":"https://api.github.com/hub","issue_search_url":"https://api.github.com/search/issues?q={query}{&page,per_page,sort,order}","issues_url":"https://api.github.com/issues","keys_url":"https://api.github.com/user/keys","notifications_url":"https://api.github.com/notifications","organization_repositories_url":"https://api.github.com/orgs/{org}/repos{?type,page,per_page,sort}","organization_url":"https://api.github.com/orgs/{org}","public_gists_url":"https://api.github.com/gists/public","rate_limit_url":"https://api.github.com/rate_limit","repository_url":"https://api.github.com/repos/{owner}/{repo}","repository_search_url":"https://api.github.com/search/repositories?q={query}{&page,per_page,sort,order}","current_user_repositories_url":"https://api.github.com/user/repos{?type,page,per_page,sort}","starred_url":"https://api.github.com/user/starred{/owner}{/repo}","starred_gists_url":"https://api.github.com/gists/starred","team_url":"https://api.github.com/teams","user_url":"https://api.github.com/users/{user}","user_organizations_url":"https://api.github.com/user/orgs","user_repositories_url":"https://api.github.com/users/{user}/repos{?type,page,per_page,sort}","user_search_url":"https://api.github.com/search/users?q={query}{&page,per_page,sort,order}"}'
6

>>>

>>> response = requests.get('https://api.github.com')
>>> response.content
b'{"current_user_url":"https://api.github.com/user","current_user_authorizations_html_url":"https://github.com/settings/connections/applications{/client_id}","authorizations_url":"https://api.github.com/authorizations","code_search_url":"https://api.github.com/search/code?q={query}{&page,per_page,sort,order}","commit_search_url":"https://api.github.com/search/commits?q={query}{&page,per_page,sort,order}","emails_url":"https://api.github.com/user/emails","emojis_url":"https://api.github.com/emojis","events_url":"https://api.github.com/events","feeds_url":"https://api.github.com/feeds","followers_url":"https://api.github.com/user/followers","following_url":"https://api.github.com/user/following{/target}","gists_url":"https://api.github.com/gists{/gist_id}","hub_url":"https://api.github.com/hub","issue_search_url":"https://api.github.com/search/issues?q={query}{&page,per_page,sort,order}","issues_url":"https://api.github.com/issues","keys_url":"https://api.github.com/user/keys","notifications_url":"https://api.github.com/notifications","organization_repositories_url":"https://api.github.com/orgs/{org}/repos{?type,page,per_page,sort}","organization_url":"https://api.github.com/orgs/{org}","public_gists_url":"https://api.github.com/gists/public","rate_limit_url":"https://api.github.com/rate_limit","repository_url":"https://api.github.com/repos/{owner}/{repo}","repository_search_url":"https://api.github.com/search/repositories?q={query}{&page,per_page,sort,order}","current_user_repositories_url":"https://api.github.com/user/repos{?type,page,per_page,sort}","starred_url":"https://api.github.com/user/starred{/owner}{/repo}","starred_gists_url":"https://api.github.com/gists/starred","team_url":"https://api.github.com/teams","user_url":"https://api.github.com/users/{user}","user_organizations_url":"https://api.github.com/user/orgs","user_repositories_url":"https://api.github.com/users/{user}/repos{?type,page,per_page,sort}","user_search_url":"https://api.github.com/search/users?q={query}{&page,per_page,sort,order}"}'
_

Meskipun

>>> response = requests.get('https://api.github.com')
>>> response.content
b'{"current_user_url":"https://api.github.com/user","current_user_authorizations_html_url":"https://github.com/settings/connections/applications{/client_id}","authorizations_url":"https://api.github.com/authorizations","code_search_url":"https://api.github.com/search/code?q={query}{&page,per_page,sort,order}","commit_search_url":"https://api.github.com/search/commits?q={query}{&page,per_page,sort,order}","emails_url":"https://api.github.com/user/emails","emojis_url":"https://api.github.com/emojis","events_url":"https://api.github.com/events","feeds_url":"https://api.github.com/feeds","followers_url":"https://api.github.com/user/followers","following_url":"https://api.github.com/user/following{/target}","gists_url":"https://api.github.com/gists{/gist_id}","hub_url":"https://api.github.com/hub","issue_search_url":"https://api.github.com/search/issues?q={query}{&page,per_page,sort,order}","issues_url":"https://api.github.com/issues","keys_url":"https://api.github.com/user/keys","notifications_url":"https://api.github.com/notifications","organization_repositories_url":"https://api.github.com/orgs/{org}/repos{?type,page,per_page,sort}","organization_url":"https://api.github.com/orgs/{org}","public_gists_url":"https://api.github.com/gists/public","rate_limit_url":"https://api.github.com/rate_limit","repository_url":"https://api.github.com/repos/{owner}/{repo}","repository_search_url":"https://api.github.com/search/repositories?q={query}{&page,per_page,sort,order}","current_user_repositories_url":"https://api.github.com/user/repos{?type,page,per_page,sort}","starred_url":"https://api.github.com/user/starred{/owner}{/repo}","starred_gists_url":"https://api.github.com/gists/starred","team_url":"https://api.github.com/teams","user_url":"https://api.github.com/users/{user}","user_organizations_url":"https://api.github.com/user/orgs","user_repositories_url":"https://api.github.com/users/{user}/repos{?type,page,per_page,sort}","user_search_url":"https://api.github.com/search/users?q={query}{&page,per_page,sort,order}"}'
_6 memberi Anda akses ke byte mentah dari muatan respons, Anda sering ingin mengonversinya menjadi string menggunakan pengkodean karakter seperti UTF-8.
>>> response.status_code
200
9 akan melakukannya untuk Anda saat Anda mengakses
>>> response = requests.get('https://api.github.com')
>>> response.content
b'{"current_user_url":"https://api.github.com/user","current_user_authorizations_html_url":"https://github.com/settings/connections/applications{/client_id}","authorizations_url":"https://api.github.com/authorizations","code_search_url":"https://api.github.com/search/code?q={query}{&page,per_page,sort,order}","commit_search_url":"https://api.github.com/search/commits?q={query}{&page,per_page,sort,order}","emails_url":"https://api.github.com/user/emails","emojis_url":"https://api.github.com/emojis","events_url":"https://api.github.com/events","feeds_url":"https://api.github.com/feeds","followers_url":"https://api.github.com/user/followers","following_url":"https://api.github.com/user/following{/target}","gists_url":"https://api.github.com/gists{/gist_id}","hub_url":"https://api.github.com/hub","issue_search_url":"https://api.github.com/search/issues?q={query}{&page,per_page,sort,order}","issues_url":"https://api.github.com/issues","keys_url":"https://api.github.com/user/keys","notifications_url":"https://api.github.com/notifications","organization_repositories_url":"https://api.github.com/orgs/{org}/repos{?type,page,per_page,sort}","organization_url":"https://api.github.com/orgs/{org}","public_gists_url":"https://api.github.com/gists/public","rate_limit_url":"https://api.github.com/rate_limit","repository_url":"https://api.github.com/repos/{owner}/{repo}","repository_search_url":"https://api.github.com/search/repositories?q={query}{&page,per_page,sort,order}","current_user_repositories_url":"https://api.github.com/user/repos{?type,page,per_page,sort}","starred_url":"https://api.github.com/user/starred{/owner}{/repo}","starred_gists_url":"https://api.github.com/gists/starred","team_url":"https://api.github.com/teams","user_url":"https://api.github.com/users/{user}","user_organizations_url":"https://api.github.com/user/orgs","user_repositories_url":"https://api.github.com/users/{user}/repos{?type,page,per_page,sort}","user_search_url":"https://api.github.com/search/users?q={query}{&page,per_page,sort,order}"}'
9

>>>

$ pipenv install requests
0

Karena decoding

>>> response = requests.get('https://api.github.com')
>>> response.content
b'{"current_user_url":"https://api.github.com/user","current_user_authorizations_html_url":"https://github.com/settings/connections/applications{/client_id}","authorizations_url":"https://api.github.com/authorizations","code_search_url":"https://api.github.com/search/code?q={query}{&page,per_page,sort,order}","commit_search_url":"https://api.github.com/search/commits?q={query}{&page,per_page,sort,order}","emails_url":"https://api.github.com/user/emails","emojis_url":"https://api.github.com/emojis","events_url":"https://api.github.com/events","feeds_url":"https://api.github.com/feeds","followers_url":"https://api.github.com/user/followers","following_url":"https://api.github.com/user/following{/target}","gists_url":"https://api.github.com/gists{/gist_id}","hub_url":"https://api.github.com/hub","issue_search_url":"https://api.github.com/search/issues?q={query}{&page,per_page,sort,order}","issues_url":"https://api.github.com/issues","keys_url":"https://api.github.com/user/keys","notifications_url":"https://api.github.com/notifications","organization_repositories_url":"https://api.github.com/orgs/{org}/repos{?type,page,per_page,sort}","organization_url":"https://api.github.com/orgs/{org}","public_gists_url":"https://api.github.com/gists/public","rate_limit_url":"https://api.github.com/rate_limit","repository_url":"https://api.github.com/repos/{owner}/{repo}","repository_search_url":"https://api.github.com/search/repositories?q={query}{&page,per_page,sort,order}","current_user_repositories_url":"https://api.github.com/user/repos{?type,page,per_page,sort}","starred_url":"https://api.github.com/user/starred{/owner}{/repo}","starred_gists_url":"https://api.github.com/gists/starred","team_url":"https://api.github.com/teams","user_url":"https://api.github.com/users/{user}","user_organizations_url":"https://api.github.com/user/orgs","user_repositories_url":"https://api.github.com/users/{user}/repos{?type,page,per_page,sort}","user_search_url":"https://api.github.com/search/users?q={query}{&page,per_page,sort,order}"}'
_5 ke
$ pipenv install requests
01 memerlukan skema encoding,
>>> requests.get('https://api.github.com')
<Response [200]>
6 akan mencoba menebak berdasarkan header respons jika Anda tidak menentukannya. Anda dapat memberikan penyandian eksplisit dengan menyetel
$ pipenv install requests
03 sebelum mengakses
>>> response = requests.get('https://api.github.com')
>>> response.content
b'{"current_user_url":"https://api.github.com/user","current_user_authorizations_html_url":"https://github.com/settings/connections/applications{/client_id}","authorizations_url":"https://api.github.com/authorizations","code_search_url":"https://api.github.com/search/code?q={query}{&page,per_page,sort,order}","commit_search_url":"https://api.github.com/search/commits?q={query}{&page,per_page,sort,order}","emails_url":"https://api.github.com/user/emails","emojis_url":"https://api.github.com/emojis","events_url":"https://api.github.com/events","feeds_url":"https://api.github.com/feeds","followers_url":"https://api.github.com/user/followers","following_url":"https://api.github.com/user/following{/target}","gists_url":"https://api.github.com/gists{/gist_id}","hub_url":"https://api.github.com/hub","issue_search_url":"https://api.github.com/search/issues?q={query}{&page,per_page,sort,order}","issues_url":"https://api.github.com/issues","keys_url":"https://api.github.com/user/keys","notifications_url":"https://api.github.com/notifications","organization_repositories_url":"https://api.github.com/orgs/{org}/repos{?type,page,per_page,sort}","organization_url":"https://api.github.com/orgs/{org}","public_gists_url":"https://api.github.com/gists/public","rate_limit_url":"https://api.github.com/rate_limit","repository_url":"https://api.github.com/repos/{owner}/{repo}","repository_search_url":"https://api.github.com/search/repositories?q={query}{&page,per_page,sort,order}","current_user_repositories_url":"https://api.github.com/user/repos{?type,page,per_page,sort}","starred_url":"https://api.github.com/user/starred{/owner}{/repo}","starred_gists_url":"https://api.github.com/gists/starred","team_url":"https://api.github.com/teams","user_url":"https://api.github.com/users/{user}","user_organizations_url":"https://api.github.com/user/orgs","user_repositories_url":"https://api.github.com/users/{user}/repos{?type,page,per_page,sort}","user_search_url":"https://api.github.com/search/users?q={query}{&page,per_page,sort,order}"}'
9

>>>

$ pipenv install requests
1

Jika Anda melihat responsnya, Anda akan melihat bahwa itu sebenarnya adalah konten JSON berseri. Untuk mendapatkan kamus, Anda dapat mengambil

$ pipenv install requests
01 yang Anda ambil dari
>>> response = requests.get('https://api.github.com')
>>> response.content
b'{"current_user_url":"https://api.github.com/user","current_user_authorizations_html_url":"https://github.com/settings/connections/applications{/client_id}","authorizations_url":"https://api.github.com/authorizations","code_search_url":"https://api.github.com/search/code?q={query}{&page,per_page,sort,order}","commit_search_url":"https://api.github.com/search/commits?q={query}{&page,per_page,sort,order}","emails_url":"https://api.github.com/user/emails","emojis_url":"https://api.github.com/emojis","events_url":"https://api.github.com/events","feeds_url":"https://api.github.com/feeds","followers_url":"https://api.github.com/user/followers","following_url":"https://api.github.com/user/following{/target}","gists_url":"https://api.github.com/gists{/gist_id}","hub_url":"https://api.github.com/hub","issue_search_url":"https://api.github.com/search/issues?q={query}{&page,per_page,sort,order}","issues_url":"https://api.github.com/issues","keys_url":"https://api.github.com/user/keys","notifications_url":"https://api.github.com/notifications","organization_repositories_url":"https://api.github.com/orgs/{org}/repos{?type,page,per_page,sort}","organization_url":"https://api.github.com/orgs/{org}","public_gists_url":"https://api.github.com/gists/public","rate_limit_url":"https://api.github.com/rate_limit","repository_url":"https://api.github.com/repos/{owner}/{repo}","repository_search_url":"https://api.github.com/search/repositories?q={query}{&page,per_page,sort,order}","current_user_repositories_url":"https://api.github.com/user/repos{?type,page,per_page,sort}","starred_url":"https://api.github.com/user/starred{/owner}{/repo}","starred_gists_url":"https://api.github.com/gists/starred","team_url":"https://api.github.com/teams","user_url":"https://api.github.com/users/{user}","user_organizations_url":"https://api.github.com/user/orgs","user_repositories_url":"https://api.github.com/users/{user}/repos{?type,page,per_page,sort}","user_search_url":"https://api.github.com/search/users?q={query}{&page,per_page,sort,order}"}'
9 dan deserialize menggunakan. Namun, cara yang lebih sederhana untuk menyelesaikan tugas ini adalah dengan menggunakan
$ pipenv install requests
08

>>>

$ pipenv install requests
2

$ pipenv install requests
_09 dari nilai pengembalian
$ pipenv install requests
08 adalah kamus, sehingga Anda dapat mengakses nilai dalam objek dengan kunci

Anda dapat melakukan banyak hal dengan kode status dan badan pesan. Namun, jika Anda memerlukan informasi lebih lanjut, seperti metadata tentang respons itu sendiri, Anda perlu melihat header respons

Header

Header respons dapat memberi Anda informasi yang berguna, seperti jenis konten payload respons dan batas waktu berapa lama untuk meng-cache respons. Untuk melihat tajuk ini, akses

$ pipenv install requests
_11

>>>

$ pipenv install requests
3

$ pipenv install requests
11 mengembalikan objek mirip kamus, memungkinkan Anda untuk mengakses nilai header dengan kunci. Misalnya, untuk melihat jenis konten payload respons, Anda dapat mengakses
$ pipenv install requests
13

>>>

$ pipenv install requests
4

Ada sesuatu yang istimewa tentang objek header seperti kamus ini. Spesifikasi HTTP mendefinisikan tajuk agar tidak peka huruf besar-kecil, yang berarti kami dapat mengakses tajuk ini tanpa mengkhawatirkan kapitalisasinya

>>>

$ pipenv install requests
5

Apakah Anda menggunakan kunci

$ pipenv install requests
14 atau
$ pipenv install requests
15, Anda akan mendapatkan nilai yang sama

Sekarang, Anda telah mempelajari dasar-dasar tentang

>>> response.status_code
200
6. Anda telah melihat atribut dan metodenya yang paling berguna beraksi. Mari mundur selangkah dan lihat bagaimana respons Anda berubah saat Anda menyesuaikan permintaan
>>> response = requests.get('https://api.github.com')
5 Anda

Hilangkan iklan

Parameter String Kueri

Salah satu cara umum untuk menyesuaikan permintaan

>>> response = requests.get('https://api.github.com')
_5 adalah dengan meneruskan nilai melalui parameter string kueri di URL. Untuk melakukan ini menggunakan
>>> response.status_code
200
_5, Anda meneruskan data ke
$ pipenv install requests
20. Misalnya, Anda dapat menggunakan API Penelusuran GitHub untuk mencari pustaka
>>> requests.get('https://api.github.com')
<Response [200]>
6

$ pipenv install requests
6

Dengan meneruskan kamus

$ pipenv install requests
22 ke parameter
$ pipenv install requests
20 dari
$ pipenv install requests
24, Anda dapat mengubah hasil yang berasal dari Search API

Anda dapat mengirimkan

$ pipenv install requests
20 ke
>>> response.status_code
200
5 dalam bentuk kamus, seperti yang baru saja Anda lakukan, atau sebagai daftar tupel

>>>

$ pipenv install requests
7

Anda bahkan dapat memberikan nilai sebagai

>>> response = requests.get('https://api.github.com')
>>> response.content
b'{"current_user_url":"https://api.github.com/user","current_user_authorizations_html_url":"https://github.com/settings/connections/applications{/client_id}","authorizations_url":"https://api.github.com/authorizations","code_search_url":"https://api.github.com/search/code?q={query}{&page,per_page,sort,order}","commit_search_url":"https://api.github.com/search/commits?q={query}{&page,per_page,sort,order}","emails_url":"https://api.github.com/user/emails","emojis_url":"https://api.github.com/emojis","events_url":"https://api.github.com/events","feeds_url":"https://api.github.com/feeds","followers_url":"https://api.github.com/user/followers","following_url":"https://api.github.com/user/following{/target}","gists_url":"https://api.github.com/gists{/gist_id}","hub_url":"https://api.github.com/hub","issue_search_url":"https://api.github.com/search/issues?q={query}{&page,per_page,sort,order}","issues_url":"https://api.github.com/issues","keys_url":"https://api.github.com/user/keys","notifications_url":"https://api.github.com/notifications","organization_repositories_url":"https://api.github.com/orgs/{org}/repos{?type,page,per_page,sort}","organization_url":"https://api.github.com/orgs/{org}","public_gists_url":"https://api.github.com/gists/public","rate_limit_url":"https://api.github.com/rate_limit","repository_url":"https://api.github.com/repos/{owner}/{repo}","repository_search_url":"https://api.github.com/search/repositories?q={query}{&page,per_page,sort,order}","current_user_repositories_url":"https://api.github.com/user/repos{?type,page,per_page,sort}","starred_url":"https://api.github.com/user/starred{/owner}{/repo}","starred_gists_url":"https://api.github.com/gists/starred","team_url":"https://api.github.com/teams","user_url":"https://api.github.com/users/{user}","user_organizations_url":"https://api.github.com/user/orgs","user_repositories_url":"https://api.github.com/users/{user}/repos{?type,page,per_page,sort}","user_search_url":"https://api.github.com/search/users?q={query}{&page,per_page,sort,order}"}'
5

>>>

$ pipenv install requests
8

String kueri berguna untuk parameterisasi

>>> response = requests.get('https://api.github.com')
5 permintaan. Anda juga dapat menyesuaikan permintaan Anda dengan menambahkan atau memodifikasi header yang Anda kirim

Header Permintaan

Untuk menyesuaikan header, Anda meneruskan kamus header HTTP ke

>>> response.status_code
200
5 menggunakan parameter
$ pipenv install requests
30. Misalnya, Anda dapat mengubah permintaan penelusuran sebelumnya untuk menyorot istilah penelusuran yang cocok di hasil dengan menentukan jenis media
$ pipenv install requests
31 di header
$ pipenv install requests
32

$ pipenv install requests
_9

Header

$ pipenv install requests
_32 memberi tahu server jenis konten apa yang dapat ditangani oleh aplikasi Anda. Dalam hal ini, karena Anda mengharapkan istilah penelusuran yang cocok disorot, Anda menggunakan nilai tajuk
$ pipenv install requests
34, yang merupakan tajuk milik GitHub
$ pipenv install requests
32 di mana kontennya adalah format JSON khusus

Sebelum Anda mempelajari lebih banyak cara untuk menyesuaikan permintaan, mari kita perluas wawasan dengan menjelajahi metode HTTP lainnya

Metode HTTP Lainnya

Selain

>>> response = requests.get('https://api.github.com')
_5, metode HTTP populer lainnya termasuk
>>> response = requests.get('https://api.github.com')
7,
$ pipenv install requests
38,
$ pipenv install requests
39,
$ pipenv install requests
40,
$ pipenv install requests
41, dan
$ pipenv install requests
42.
>>> requests.get('https://api.github.com')
<Response [200]>
6 menyediakan metode, dengan tanda tangan yang mirip dengan
>>> response.status_code
200
5, untuk masing-masing metode HTTP ini

>>>

import requests
0

Setiap panggilan fungsi membuat permintaan ke layanan

$ pipenv install requests
_45 menggunakan metode HTTP yang sesuai. Untuk setiap metode, Anda dapat memeriksa respons mereka dengan cara yang sama seperti sebelumnya

>>>

import requests
1

Header, badan respons, kode status, dan lainnya dikembalikan di

>>> response.status_code
200
6 untuk setiap metode. Selanjutnya Anda akan melihat lebih dekat pada metode
>>> response = requests.get('https://api.github.com')
7,
$ pipenv install requests
38, dan
$ pipenv install requests
41 dan mempelajari perbedaannya dari jenis permintaan lainnya

Hilangkan iklan

Badan Pesan

Menurut spesifikasi HTTP, permintaan

>>> response = requests.get('https://api.github.com')
7,
$ pipenv install requests
38, dan
$ pipenv install requests
41 yang kurang umum meneruskan datanya melalui badan pesan, bukan melalui parameter dalam string kueri. Menggunakan
>>> requests.get('https://api.github.com')
<Response [200]>
_6, Anda akan meneruskan muatan ke parameter
$ pipenv install requests
54 fungsi yang sesuai

$ pipenv install requests
54 mengambil kamus, daftar tupel, byte, atau objek seperti file. Anda ingin menyesuaikan data yang Anda kirimkan dalam isi permintaan Anda dengan kebutuhan khusus layanan yang Anda gunakan untuk berinteraksi

Misalnya, jika jenis konten permintaan Anda adalah

$ pipenv install requests
56, Anda dapat mengirim data formulir sebagai kamus

>>>

import requests
2

Anda juga dapat mengirim data yang sama sebagai daftar tupel

>>>

import requests
3

Namun, jika Anda perlu mengirim data JSON, Anda dapat menggunakan parameter

$ pipenv install requests
57. Saat Anda mengirimkan data JSON melalui
$ pipenv install requests
57,
>>> requests.get('https://api.github.com')
<Response [200]>
6 akan membuat serial data Anda dan menambahkan header
$ pipenv install requests
13 yang benar untuk Anda

httpbin. org adalah sumber yang bagus yang dibuat oleh penulis

>>> requests.get('https://api.github.com')
<Response [200]>
6, Kenneth Reitz. Ini adalah layanan yang menerima permintaan pengujian dan merespons dengan data tentang permintaan tersebut. Misalnya, Anda dapat menggunakannya untuk memeriksa permintaan
>>> response = requests.get('https://api.github.com')
7 dasar

>>>

import requests
4

Anda dapat melihat dari respons bahwa server menerima data dan header permintaan Anda saat Anda mengirimkannya.

>>> requests.get('https://api.github.com')
<Response [200]>
6 juga memberikan informasi ini kepada Anda dalam bentuk
$ pipenv install requests
64

Memeriksa Permintaan Anda

Saat Anda membuat permintaan, perpustakaan

>>> requests.get('https://api.github.com')
<Response [200]>
_6 menyiapkan permintaan sebelum benar-benar mengirimkannya ke server tujuan. Persiapan permintaan mencakup hal-hal seperti memvalidasi header dan membuat serial konten JSON

Anda dapat melihat

$ pipenv install requests
_64 dengan mengakses
$ pipenv install requests
67

>>>

import requests
5

Memeriksa

$ pipenv install requests
_64 memberi Anda akses ke semua jenis informasi tentang permintaan yang dibuat seperti payload, URL, header, autentikasi, dan lainnya

Sejauh ini, Anda telah membuat banyak jenis permintaan, tetapi semuanya memiliki satu kesamaan. itu adalah permintaan yang tidak diautentikasi ke API publik. Banyak layanan yang mungkin Anda temui ingin Anda mengautentikasi dengan cara tertentu

Autentikasi

Otentikasi membantu layanan memahami siapa Anda. Biasanya, Anda memberikan kredensial Anda ke server dengan meneruskan data melalui header

$ pipenv install requests
69 atau header khusus yang ditentukan oleh layanan. Semua fungsi permintaan yang Anda lihat sampai saat ini menyediakan parameter yang disebut
$ pipenv install requests
70, yang memungkinkan Anda meneruskan kredensial Anda

Salah satu contoh API yang memerlukan autentikasi adalah API GitHub. Titik akhir ini memberikan informasi tentang profil pengguna yang diautentikasi. Untuk membuat permintaan ke Authenticated User API, Anda dapat mengirimkan nama pengguna dan kata sandi GitHub Anda dalam sebuah Tuple ke

>>> response.status_code
200
5

>>>

import requests
6

Permintaan berhasil jika kredensial yang Anda berikan di tuple ke

$ pipenv install requests
70 valid. Jika Anda mencoba membuat permintaan ini tanpa kredensial, Anda akan melihat bahwa kode statusnya adalah
$ pipenv install requests
73

>>>

import requests
7

Saat Anda meneruskan nama pengguna dan kata sandi Anda dalam tupel ke parameter

$ pipenv install requests
70,
>>> requests.get('https://api.github.com')
<Response [200]>
6 menerapkan kredensial menggunakan skema autentikasi akses Dasar HTTP di bawah tenda

Oleh karena itu, Anda dapat membuat permintaan yang sama dengan mengirimkan kredensial autentikasi Dasar eksplisit menggunakan

$ pipenv install requests
76

>>>

import requests
8

Meskipun Anda tidak perlu eksplisit untuk autentikasi Dasar, Anda mungkin ingin mengautentikasi menggunakan metode lain.

>>> requests.get('https://api.github.com')
<Response [200]>
6 menyediakan metode otentikasi lain di luar kotak seperti
$ pipenv install requests
78 dan
$ pipenv install requests
79

Anda bahkan dapat menyediakan mekanisme autentikasi Anda sendiri. Untuk melakukannya, Anda harus terlebih dahulu membuat subkelas

$ pipenv install requests
80. Kemudian, Anda menerapkan
$ pipenv install requests
_81

import requests
_9

Di sini, mekanisme

$ pipenv install requests
82 kustom Anda menerima token, lalu menyertakan token tersebut di header
$ pipenv install requests
83 permintaan Anda

Mekanisme autentikasi yang buruk dapat menyebabkan kerentanan keamanan, jadi kecuali layanan memerlukan mekanisme autentikasi khusus untuk beberapa alasan, Anda akan selalu ingin menggunakan skema autentikasi yang telah dicoba dan benar seperti Basic atau OAuth

Saat Anda memikirkan tentang keamanan, mari pertimbangkan untuk berurusan dengan Sertifikat SSL menggunakan

>>> requests.get('https://api.github.com')
<Response [200]>
6

Hilangkan iklan

Verifikasi Sertifikat SSL

Setiap kali data yang Anda coba kirim atau terima bersifat sensitif, keamanan menjadi penting. Cara Anda berkomunikasi dengan situs aman melalui HTTP adalah dengan membuat koneksi terenkripsi menggunakan SSL, yang berarti memverifikasi Sertifikat SSL server target sangat penting.

Kabar baiknya adalah

>>> requests.get('https://api.github.com')
<Response [200]>
_6 melakukan ini untuk Anda secara default. Namun, ada beberapa kasus di mana Anda mungkin ingin mengubah perilaku ini

Jika Anda ingin menonaktifkan verifikasi Sertifikat SSL, Anda meneruskan

if response:
    print('Success!')
else:
    print('An error has occurred.')
7 ke parameter
$ pipenv install requests
87 dari fungsi permintaan

>>>

>>> requests.get('https://api.github.com')
<Response [200]>
0

>>> requests.get('https://api.github.com')
<Response [200]>
6 bahkan memperingatkan Anda ketika Anda membuat permintaan yang tidak aman untuk membantu Anda menjaga keamanan data Anda

Catatan. untuk memberikan Otoritas Sertifikat. Ini memungkinkan

>>> requests.get('https://api.github.com')
<Response [200]>
6 mengetahui otoritas mana yang dapat dipercaya. Oleh karena itu, Anda harus sering memperbarui
$ pipenv install requests
_90 untuk menjaga koneksi Anda seaman mungkin

Pertunjukan

Saat menggunakan

>>> requests.get('https://api.github.com')
<Response [200]>
_6, khususnya di lingkungan aplikasi produksi, penting untuk mempertimbangkan implikasi kinerja. Fitur seperti kontrol waktu tunggu, sesi, dan batas coba lagi dapat membantu Anda menjaga agar aplikasi tetap berjalan dengan lancar

Timeout

Saat Anda membuat permintaan sebaris ke layanan eksternal, sistem Anda harus menunggu respons sebelum melanjutkan. Jika aplikasi Anda menunggu terlalu lama untuk respons tersebut, permintaan ke layanan Anda dapat dicadangkan, pengalaman pengguna Anda dapat terganggu, atau pekerjaan latar belakang Anda dapat macet

Secara default,

>>> requests.get('https://api.github.com')
<Response [200]>
6 akan menunggu tanggapan tanpa batas waktu, jadi Anda harus selalu menentukan durasi batas waktu untuk mencegah hal ini terjadi. Untuk menyetel batas waktu permintaan, gunakan parameter
$ pipenv install requests
95.
$ pipenv install requests
95 dapat berupa bilangan bulat atau float yang mewakili jumlah detik untuk menunggu respons sebelum waktu habis

>>>

>>> requests.get('https://api.github.com')
<Response [200]>
1

Dalam permintaan pertama, permintaan akan habis setelah 1 detik. Dalam permintaan kedua, permintaan akan habis setelah 3. 05 detik

ke

$ pipenv install requests
_95 dengan elemen pertama adalah batas waktu koneksi (waktu yang memungkinkan klien untuk membuat koneksi ke server), dan elemen kedua adalah batas waktu baca (waktu menunggu respons setelah klien Anda membuat koneksi

>>>

>>> requests.get('https://api.github.com')
<Response [200]>
2

Jika permintaan membuat koneksi dalam waktu 2 detik dan menerima data dalam waktu 5 detik setelah koneksi dibuat, maka respons akan dikembalikan seperti sebelumnya. Jika waktu permintaan habis, maka fungsi akan memunculkan pengecualian

$ pipenv install requests
98

>>> requests.get('https://api.github.com')
<Response [200]>
_3

Program Anda dapat menangkap pengecualian

$ pipenv install requests
_98 dan meresponsnya dengan sesuai

Objek Sesi

Hingga saat ini, Anda telah berurusan dengan API

>>> requests.get('https://api.github.com')
<Response [200]>
6 tingkat tinggi seperti
>>> response.status_code
200
5 dan
import requests
02. Fungsi-fungsi ini adalah abstraksi dari apa yang terjadi saat Anda mengajukan permintaan. Mereka menyembunyikan detail implementasi seperti bagaimana koneksi dikelola sehingga Anda tidak perlu mengkhawatirkannya

Di bawah abstraksi itu ada kelas yang disebut

import requests
03. Jika Anda perlu menyempurnakan kontrol Anda atas bagaimana permintaan dibuat atau meningkatkan kinerja permintaan Anda, Anda mungkin perlu menggunakan instans
import requests
03 secara langsung

Sesi digunakan untuk mempertahankan parameter di seluruh permintaan. Misalnya, jika Anda ingin menggunakan autentikasi yang sama untuk beberapa permintaan, Anda dapat menggunakan satu sesi

>>> requests.get('https://api.github.com')
<Response [200]>
_4

Setiap kali Anda membuat permintaan dengan

import requests
_05, setelah diinisialisasi dengan kredensial autentikasi, kredensial akan dipertahankan

Optimalisasi kinerja utama sesi datang dalam bentuk koneksi yang persisten. Saat aplikasi Anda membuat koneksi ke server menggunakan

import requests
03, koneksi tersebut tetap ada di kumpulan koneksi. Saat aplikasi Anda ingin terhubung ke server yang sama lagi, itu akan menggunakan kembali koneksi dari kumpulan daripada membuat yang baru

Hilangkan iklan

Max Coba Ulang

Saat permintaan gagal, Anda mungkin ingin aplikasi Anda mencoba kembali permintaan yang sama. Namun,

>>> requests.get('https://api.github.com')
<Response [200]>
6 tidak akan melakukan ini untuk Anda secara default. Untuk menerapkan fungsi ini, Anda perlu menerapkan custom

Transport Adapter memungkinkan Anda menentukan sekumpulan konfigurasi per layanan yang berinteraksi dengan Anda. Misalnya, Anda ingin semua permintaan

import requests
08 mencoba lagi tiga kali sebelum akhirnya menaikkan
import requests
09. Anda akan membuat Transport Adapter, menyetel parameter
import requests
10, dan memasangnya ke
import requests
03 yang sudah ada

>>> requests.get('https://api.github.com')
<Response [200]>
5

Saat Anda memasang

import requests
_12,
import requests
13, ke
import requests
05,
import requests
05 akan mematuhi konfigurasinya untuk setiap permintaan ke https. // api. github. com

Waktu tunggu, Adaptor Transportasi, dan sesi adalah untuk menjaga agar kode Anda tetap efisien dan ketahanan aplikasi Anda

Kesimpulan

Anda telah belajar jauh tentang perpustakaan

>>> requests.get('https://api.github.com')
<Response [200]>
6 Python yang kuat

Anda sekarang bisa

  • Buat permintaan menggunakan berbagai metode HTTP yang berbeda seperti
    >>> response = requests.get('https://api.github.com')
    
    5,
    >>> response = requests.get('https://api.github.com')
    
    7, dan
    $ pipenv install requests
    
    38
  • Sesuaikan permintaan Anda dengan memodifikasi header, autentikasi, string kueri, dan badan pesan
  • Periksa data yang Anda kirim ke server dan data yang dikirim kembali oleh server kepada Anda
  • Bekerja dengan verifikasi Sertifikat SSL
  • Gunakan
    >>> requests.get('https://api.github.com')
    <Response [200]>
    
    6 secara efektif menggunakan
    import requests
    
    10,
    $ pipenv install requests
    
    95, Sesi, dan Adaptor Transportasi

Karena Anda telah mempelajari cara menggunakan

>>> requests.get('https://api.github.com')
<Response [200]>
_6, Anda diperlengkapi untuk menjelajahi dunia layanan web yang luas dan membangun aplikasi luar biasa menggunakan data menarik yang mereka sediakan

Ikuti Kuis. Uji pengetahuan Anda dengan kuis "Permintaan HTTP Dengan Perpustakaan" "permintaan" interaktif kami. Setelah selesai Anda akan menerima skor sehingga Anda dapat melacak kemajuan belajar Anda dari waktu ke waktu

Ikuti Kuis »

Tandai sebagai Selesai

Tonton Sekarang Tutorial ini memiliki kursus video terkait yang dibuat oleh tim Real Python. Tonton bersama dengan tutorial tertulis untuk memperdalam pemahaman Anda. Membuat Permintaan HTTP Dengan Python

🐍 Trik Python 💌

Dapatkan Trik Python singkat & manis yang dikirim ke kotak masuk Anda setiap beberapa hari. Tidak pernah ada spam. Berhenti berlangganan kapan saja. Dikuratori oleh tim Real Python

Bagaimana cara mendapatkan header permintaan http dengan python?

Kirimi Saya Trik Python »

Tentang Alex Ronquillo

Bagaimana cara mendapatkan header permintaan http dengan python?
Bagaimana cara mendapatkan header permintaan http dengan python?

Alex Ronquillo adalah Insinyur Perangkat Lunak di lab. Dia adalah seorang Pythonista yang rajin yang juga bersemangat dalam menulis dan mengembangkan game

» Lebih lanjut tentang Alex


Setiap tutorial di Real Python dibuat oleh tim pengembang sehingga memenuhi standar kualitas tinggi kami. Anggota tim yang mengerjakan tutorial ini adalah

Bagaimana cara mendapatkan header permintaan http dengan python?

Aldren

Bagaimana cara mendapatkan header permintaan http dengan python?

Brad

Bagaimana cara mendapatkan header permintaan http dengan python?

Joanna

Master Keterampilan Python Dunia Nyata Dengan Akses Tanpa Batas ke Python Nyata

Bergabunglah dengan kami dan dapatkan akses ke ribuan tutorial, kursus video langsung, dan komunitas pakar Pythonista

Tingkatkan Keterampilan Python Anda »

Guru Keterampilan Python Dunia Nyata
Dengan Akses Tak Terbatas ke Real Python

Bergabunglah dengan kami dan dapatkan akses ke ribuan tutorial, kursus video langsung, dan komunitas ahli Pythonista

Tingkatkan Keterampilan Python Anda »

Bagaimana menurut anda?

Nilai artikel ini

Tweet Bagikan Bagikan Email

Apa takeaway # 1 Anda atau hal favorit yang Anda pelajari?

Kiat Berkomentar. Komentar yang paling berguna adalah yang ditulis dengan tujuan belajar dari atau membantu siswa lain. dan dapatkan jawaban atas pertanyaan umum di portal dukungan kami

Bagaimana cara mendapatkan tajuk permintaan HTTP?

Di Chrome, kunjungi URL(seperti https. // www. google. com ), klik kanan, pilih Periksa untuk membuka alat pengembang. .
Pilih tab Jaringan
Muat ulang halaman, pilih permintaan HTTP apa pun di panel kiri, dan tajuk HTTP akan ditampilkan di panel kanan

Bagaimana cara menemukan nilai tajuk HTTP?

Untuk mendapatkan header permintaan HTTP, Anda memerlukan kelas ini HttpServletRequest. .
Contoh HttpServletRequest. 1. 1 Ulangi nama header permintaan dan cetak nilainya. WebUtils. Jawa. .
Contoh MVC Musim Semi. Di Spring MVC, Anda dapat @Autowired HttpServletRequest ke kacang yang dikelola Spring secara langsung. Pengontrol Situs. Jawa

Bagaimana Anda mengatur permintaan tajuk dengan Python?

Sintaks. permintaan. posting(url, data={key. nilai}, json={kunci. nilai}, tajuk = {kunci. value}, args) *(data, json, parameter header bersifat opsional. )

Bagaimana cara mencetak tajuk dengan Python?

kolom untuk mencetak nama kolom dengan Python. Kita bisa menggunakan panda. kerangka data. variabel kolom untuk mencetak tag kolom atau header dengan mudah.