Permintaan Python Dapatkan: Panduan Lengkap – Codewithaden

Perpustakaan permintaan adalah standar utama untuk membuat permintaan HTTP di Python. Meminta dengan Permintaan Python Perpustakaan sangat sederhana. Ini mengabstraksi kompleksitas membuat permintaan HTTP di balik API yang indah dan sederhana sehingga Anda dapat berkonsentrasi untuk berinteraksi dengan layanan dan mengonsumsi data di aplikasi Anda.

Http mendapatkan permintaan

Metode HTTP (Hypertext Transfer Protocol) seperti GET dan POST memutuskan tindakan mana yang Anda coba lakukan saat membuat permintaan HTTP. Selain GET dan POST, ada beberapa metode standar lain yang akan Anda gunakan nanti dalam contoh ini.

Salah satu metode HTTP paling standar adalah GET. Metode GET menunjukkan bahwa Anda mencoba untuk mendapatkan atau mengambil data dari sumber daya yang ditentukan.

Instal Modul Permintaan Python

Anda dapat menginstal permintaan Perpustakaan dengan menjalankan perintah berikut.

python3 -m pip install requests

# OR

pip install requests 

Jika Anda ingin menggunakan Pipenv Untuk mengelola paket Python, Anda dapat menjalankan yang berikut.

pipenv install requests 

Sekali Modul Permintaan diinstal, Anda dapat menggunakannya di aplikasi Anda. Misalnya, mengimpor permintaan terlihat seperti di bawah ini.

import requests 

Permintaan Python dapatkan

Untuk membuat a DAPATKAN meminta di Python , menggunakan requests.get () metode. Metode get () mengambil tiga parameter dan mengembalikan respons dengan kode status. Metode Permintaan Get () mengirimkan permintaan GET ke URL yang ditentukan.

Sintaksis

requests.get(url, params={key: value}, args) 

Args berarti nol atau lebih dari bernama Argumen dalam tabel parameter di bawah ini. Contoh:

requests.get(url, timeout=2.50) 

Parameter

ParameterKeterangan
url Yg dibutuhkan. URL permintaan.
params Opsional. Ini adalah sebuah kamus , daftar tupel atau byte untuk dikirim sebagai string kueri.

Bawaan Tidak ada
Izin_Redirects Opsional. Boolean untuk mengaktifkan/menonaktifkan pengalihan.

Bawaan BENAR (mengizinkan pengalihan)
auth Opsional. SEBUAH tuple untuk mengaktifkan otentikasi HTTP yang aman.

Bawaan Tidak ada
cert Opsional. Ini adalah sebuah Rangkaian atau Tuple menentukan file atau kunci sertifikat.

Bawaan Tidak ada
kue Opsional. Ini adalah kamus cookie untuk dikirim ke URL yang ditentukan.

Bawaan Tidak ada
header Opsional. Ini adalah kamus header HTTP untuk dikirim ke URL yang ditentukan.

Bawaan Tidak ada
proxy Opsional. Ini adalah kamus protokol ke URL proxy.

Bawaan Tidak ada
sungai kecil Opsional. Ini adalah indikasi boolean jika respons harus segera diunduh (false) atau streamed (true).

Bawaan PALSU
waktu habis Opsional. Ini adalah angka, atau tuple, menunjukkan berapa detik untuk menunggu klien membuat koneksi dan mengirim respons.

Bawaan Tidak ada berarti bahwa permintaan akan berlanjut sampai koneksi ditutup.
memeriksa Opsional. Indikasi boolean atau string untuk menguji sertifikat TLS server atau tidak.

Bawaan BENAR

Kami akan menghubungi Github API.

import requests

data = requests.get('https://api.github.com/users/KrunalLathiya')
print(data.json()['login']) 

Keluaran

KrunalLathiya 

Kami mendapat respons dalam bentuk data, dan kemudian kami telah menggunakan json () untuk menguraikan data.

Jadi, kami mendapatkan data dalam bentuk a kamus , Kalau begitu, kita perlu memanggil kunci nilai, dan kita akan mendapatkan nilainya.

Objek respons

Itu requests.get () Metode Mengembalikan respons yang merupakan objek yang kuat untuk memeriksa hasil permintaan. Sekali lagi, ayo Lihat contoh contoh di atas, tetapi kali ini, kami tidak akan mengurai JSON.

import requests

data = requests.get('https://api.github.com/users/KrunalLathiya')
print(data)
 

Keluaran

 

Dalam contoh contoh ini, Anda telah menangkap nilai pengembalian get (), contoh respons, dan menyimpannya dalam variabel yang disebut respons. Anda sekarang dapat menggunakan tanggapan untuk melihat banyak informasi tentang hasil permintaan GET Anda.

Kami mendapat kode status dalam respons, yaitu 200. Jadi itu berarti halaman ada di sana.

Mari kita kirim permintaan GET di mana kami tidak mendapatkan 200 dalam kode status.

import requests

data = requests.get('https://api.github.com/KrunalLathiya')
print(data)
 

Keluaran

 

Itu berarti halaman tidak ada, dan kami mendapatkan halaman yang tidak ditemukan kesalahan yang kode statusnya adalah 404.

Kode status

Informasi pertama yang dapat kami kumpulkan dari tanggapan adalah kode status. Kode status memberi tahu Anda tentang status permintaan.

Misalnya, status 200 OK berarti bahwa permintaan Anda berhasil, sedangkan status 404 berarti bahwa sumber daya yang Anda cari tidak ditemukan.

Dalam contoh di atas, kami mendapatkan kode status 200 dan 404.

Dengan mengakses .Kode status , Anda dapat melihat kode status yang dikembalikan server.

import requests

data = requests.get('https://api.github.com/KrunalLathiya')
print(data.status_code)
 

Keluaran

404 

Terkadang, Anda harus menggunakan informasi kode status untuk membuat keputusan dalam kode Anda. Misalnya, letakkan Pernyataan If-Else berdasarkan kode yang dikembalikan.

if response.status_code == 200:
    print('You got the success!')
elif response.status_code == 404:
    print('Page not Found.') 

Anda dapat menyederhanakan contoh contoh di atas dengan menulis ulang jika penyataan.

if response:
    print('You got the success!')
else:
    print('Something went wrong.') 

Naikkan pengecualian berdasarkan kode status

Anda tidak perlu memeriksa kode status respons dalam pernyataan IF. Sebaliknya, Anda harus menaikkan pengecualian jika permintaan itu tidak berhasil. Anda dapat melakukan penggunaan .raise_for_status ().

Lihat kode berikut.

from requests import get, HTTPError

for url in ['https://api.github.com/users/KrunalLathiya', 'https://api.github.com/data']:
    try:
        response = 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}')
    except Exception as err:
        print(f'Other error occurred: {err}')
    else:
        print('Successfull GET Request')
 

Dalam contoh ini contoh, kami baru saja mengimpor metode yang diperlukan untuk mengimpor dari modul permintaan.

Kami telah mengimpor Dapatkan dan Httperror.

Kemudian kami telah menggunakannya untuk … di loop dan menggunakan Penanganan pengecualian mekanisme.

Jika respons permintaan berhasil, maka tidak ada pengecualian yang akan dinaikkan; Kalau tidak, pengecualian httperror akan dinaikkan.

Dalam contoh kode di atas, kami telah melewati dua item daftar. Satu valid, dan yang lain tidak valid.

Lihat outputnya.

Successfull GET Request
HTTP error occurred: 404 Client Error: Not Found for url: https://api.github.com/data 

Anda dapat melihat bahwa permintaan GET pertama berhasil, dan permintaan GET kedua gagal dan mengembalikan kesalahan klien 404.

Jika Anda memohon .raise_for_status () , Httperror akan dinaikkan untuk kode status tertentu. Jika kode status menunjukkan permintaan yang berhasil, program akan dilanjutkan tanpa kecuali dinaikkan.

Isi

Permintaan GET sering memiliki beberapa informasi berharga, yang dikenal sebagai muatan, di badan pesan. Menggunakan atribut dan metode respons, Anda dapat melihat muatan dalam berbagai format.

from requests import get

res = get('https://api.github.com/users/KrunalLathiya')

print(res.content)
 

Keluaran

b'{"login":"KrunalLathiya","id":14403830,"node_id":"MDQ6VXNlcjE0NDAzODMw",
"avatar_url":"https://avatars1.githubusercontent.com/u/14403830?v=4",
"gravatar_id":"","url":"https://api.github.com/users/KrunalLathiya",
"html_url":"https://github.com/KrunalLathiya",
"followers_url":"https://api.github.com/users/KrunalLathiya/followers",
"following_url":"https://api.github.com/users/KrunalLathiya/following{/other_user}",
"gists_url":"https://api.github.com/users/KrunalLathiya/gists{/gist_id}",
"starred_url":"https://api.github.com/users/KrunalLathiya/starred{/owner}{/repo}",
"subscriptions_url":"https://api.github.com/users/KrunalLathiya/subscriptions",
"organizations_url":"https://api.github.com/users/KrunalLathiya/orgs",
"repos_url":"https://api.github.com/users/KrunalLathiya/repos",
"events_url":"https://api.github.com/users/KrunalLathiya/events{/privacy}",
"received_events_url":"https://api.github.com/users/KrunalLathiya/received_events",
"type":"User",
"site_admin":false,"name":"Krunal","company":"Freelancer",
"blog":"https://appdividend.com","location":"Rajkot",
"email":null,"hireable":true,"bio":"Web Developer and Author",
"twitter_username":null,"public_repos":121,"public_gists":0,
"followers":546,"following":13,"created_at":"2015-09-20T19:22:19Z",
"updated_at":"2020-06-07T13:10:25Z"}' 

Properti konten dari objek respons memberikan byte mentah dari muatan. Anda sering harus mengubahnya menjadi string menggunakan pengkodean karakter seperti UTF-8

Responsnya akan melakukannya untuk Anda saat Anda mengakses .teks.

from requests import get

res = get('https://api.github.com/users/KrunalLathiya')

print(res.text)
 

Konversi JSON serial menjadi kamus

Jika Anda memeriksa konten respons dengan cermat, Anda dapat melihat bahwa itu adalah JSON serial. Anda dapat mengonversi JSON ke kamus menggunakan metode .json ().

from requests import get

res = get('https://api.github.com/users/KrunalLathiya')

print(res.json())
 

Keluaran

{'login': 'KrunalLathiya', 'id': 14403830, 'node_id': 'MDQ6VXNlcjE0NDAzODMw', 
'avatar_url': 'https://avatars1.githubusercontent.com/u/14403830?v=4', 
'gravatar_id': '', 'url': 'https://api.github.com/users/KrunalLathiya', 
'html_url': 'https://github.com/KrunalLathiya', 
'followers_url': 'https://api.github.com/users/KrunalLathiya/followers', 
'following_url': 'https://api.github.com/users/KrunalLathiya/following{/other_user}', 
'gists_url': 'https://api.github.com/users/KrunalLathiya/gists{/gist_id}', 
'starred_url': 'https://api.github.com/users/KrunalLathiya/starred{/owner}{/repo}', 
'subscriptions_url': 'https://api.github.com/users/KrunalLathiya/subscriptions', 
'organizations_url': 'https://api.github.com/users/KrunalLathiya/orgs', 
'repos_url': 'https://api.github.com/users/KrunalLathiya/repos', 
'events_url': 'https://api.github.com/users/KrunalLathiya/events{/privacy}', 
'received_events_url': 'https://api.github.com/users/KrunalLathiya/received_events', 
'type': 'User', 'site_admin': False, 'name': 'Krunal', 
'company': 'Freelancer', 'blog': 'https://appdividend.com', 
'location': 'Rajkot', 'email': None, 
'hireable': True, 'bio': 'Web Developer and Author', 
'twitter_username': None, 'public_repos': 121, 
'public_gists': 0, 'followers': 546, 'following': 13, 
'created_at': '2015-09-20T19:22:19Z', 
'updated_at': '2020-06-07T13:10:25Z'} 

Anda dapat melihat bahwa saya telah mendapatkan data dalam bentuk kamus.

Sekarang, saya dapat mengakses nilai satu-satu dari kamus menggunakan kuncinya.

from requests import get

res = get('https://api.github.com/users/KrunalLathiya')

print(res.json()['login'])
 

Keluaran

KrunalLathiya 

Jenis nilai pengembalian metode .json () adalah kamus sehingga Anda dapat mengakses nilai -nilai dalam objek dengan kunci.

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

Header

Header respons dapat memberi kami informasi yang bermanfaat, seperti jenis konten dari muatan respons dan batas waktu berapa lama untuk menyimpan respons. Untuk melihat header ini, akses .HEADERS.

from requests import get

res = get('https://api.github.com/users/KrunalLathiya')

print(res.headers)
 

Keluaran

{'date': 'Thu, 18 Jun 2020 08:06:29 GMT', 'content-type': 'application/json; charset=utf-8', 'server': 'GitHub.com', 'status': '200 OK', 'cache-control': 'public, max-age=60, s-maxage=60', 'vary': 'Accept, Accept-Encoding, Accept, X-Requested-With, Accept-Encoding', 'etag': 'W/"cd0a64256ac419c62d91c62feebf0f95"', 'last-modified': 'Sun, 07 Jun 2020 13:10:25 GMT', 'x-github-media-type': 'github.v3; format=json', 'access-control-expose-headers': 'ETag, Link, Location, Retry-After, X-GitHub-OTP, X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset, X-OAuth-Scopes, X-Accepted-OAuth-Scopes, X-Poll-Interval, X-GitHub-Media-Type, Deprecation, Sunset', 'access-control-allow-origin': '*', 'strict-transport-security': 'max-age=31536000; includeSubdomains; preload', 'x-frame-options': 'deny', 'x-content-type-options': 'nosniff', 'x-xss-protection': '1; mode=block', 'referrer-policy': 'origin-when-cross-origin, strict-origin-when-cross-origin', 'content-security-policy': "default-src 'none'", 'content-encoding': 'gzip', 'X-Ratelimit-Limit': '60', 'X-Ratelimit-Remaining': '54', 'X-Ratelimit-Reset': '1592469405', 'Accept-Ranges': 'bytes', 'Content-Length': '513', 'X-GitHub-Request-Id': '9E0F:3387:F368EE:140B639:5EEB2084'} 

Itu .HEADERS Kembalikan objek seperti kamus, memungkinkan Anda untuk mengakses nilai header dengan kunci.

from requests import get

res = get('https://api.github.com/users/KrunalLathiya')

print(res.headers['server'])
 

Keluaran

GitHub.com 

Ada sesuatu yang istimewa tentang objek header seperti kamus ini. Spesifikasi HTTP mendefinisikan header menjadi tidak peka, yang berarti kita dapat mengakses header ini tanpa khawatir tentang kapitalisasi mereka.

Meminta header

Untuk menyesuaikan header, Anda melewati kamus header http untuk mendapatkan () menggunakan parameter header.

Misalnya, Anda dapat mengubah permintaan pencarian sebelumnya untuk menyorot istilah pencarian yang cocok dalam hasil dengan menentukan jenis media pertandingan-pertandingan di header ACCECT.

from requests import get


response = get(
    'https://api.github.com/search/repositories',
    params={'q': 'requests+language:php'},
    headers={'Accept': 'application/vnd.github.v3.text-match+json'},
)

# View the new `text-matches` array which provides information
# about your search term within the results
json_response = response.json()
repository = json_response['items'][0]
print(f'Text matches: {repository["text_matches"]}')
 

Keluaran

Text matches: [{'object_url': 'https://api.github.com/repositories/117567334', 'object_type': 'Repository', 'property': 'description', 'fragment': 'Easily build Eloquent queries from API requests', 'matches': [{'text': 'requests', 'indices': [39, 47]}]}] 

Header AcCECT memberi tahu server jenis konten apa yang dapat ditangani aplikasi Anda.

Karena Anda mengharapkan istilah pencarian yang cocok untuk disorot, Anda menggunakan nilai header Application/vnd.github.v3.text-match+json adalah header penerimaan GitHub yang berpemilik di mana konten berada dalam format JSON tertentu.

Kesimpulan

Dalam permintaan Python ini, dapatkan contoh contoh, kami telah melihat cara mengirim permintaan mendapatkan ke server, menangani respons, mengonversi data dari JSON ke kamus, dan meminta header.

Akhirnya, Contoh Permintaan Python Get () sudah berakhir.

Lihat juga

Cara menginstal modul python

Cara meningkatkan pip

Cara menginstal numpy

Artikel ini berasal dari website Winpoin, dan kemudian diterjemahkan ke bahasa indonesia, baca artikel asli disini

Leave a Reply

Your email address will not be published. Required fields are marked *