Pustaka 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 Show
Sepanjang artikel ini, Anda akan melihat beberapa fitur paling berguna yang ditawarkan 6 serta cara menyesuaikan dan mengoptimalkan fitur tersebut untuk berbagai situasi yang mungkin Anda temui. Anda juga akan mempelajari cara menggunakan 6 dengan cara yang efisien serta cara mencegah permintaan ke layanan eksternal memperlambat aplikasi AndaDalam tutorial ini, Anda akan mempelajari caranya
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 6 dalam aplikasi AndaIkuti 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]> 6Mari kita mulai dengan menginstal pustaka 6. Untuk melakukannya, jalankan perintah berikut _Jika Anda lebih suka menggunakan Pipenv untuk mengelola paket Python, Anda dapat menjalankan perintah berikut
Setelah 6 diinstal, Anda dapat menggunakannya di aplikasi Anda. Mengimpor _6 terlihat seperti ini
Sekarang setelah Anda siap, saatnya untuk memulai perjalanan Anda melalui 6. Tujuan pertama Anda adalah mempelajari cara membuat permintaan 5Hilangkan iklanPermintaan GETseperti 5 dan 7, tentukan tindakan yang ingin Anda lakukan saat membuat permintaan HTTP. Selain 5 dan 7, ada beberapa metode umum lainnya yang akan Anda gunakan nanti dalam tutorial iniSalah satu metode HTTP yang paling umum adalah 5. Metode _5 menunjukkan bahwa Anda mencoba untuk mendapatkan atau mengambil data dari sumber tertentu. Untuk membuat permintaan _5, aktifkan 3Untuk menguji ini, Anda dapat membuat permintaan _5 ke GitHub dengan menghubungi 5 dengan URL berikut>>> ________0______ Selamat. Anda telah membuat permintaan pertama Anda. Mari selami lebih dalam tanggapan dari permintaan itu Responnya _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>>> _Dalam contoh ini, Anda telah mengambil nilai pengembalian 5, yang merupakan turunan dari 6, dan menyimpannya dalam variabel bernama 9. Anda sekarang dapat menggunakan _9 untuk melihat banyak informasi tentang hasil permintaan 5 AndaKode StatusSedikit informasi pertama yang dapat Anda kumpulkan dari 6 adalah kode status. Kode status memberi tahu Anda tentang status permintaanMisalnya, status _3 berarti permintaan Anda berhasil, sedangkan status 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 AndaDengan mengakses _5, Anda dapat melihat kode status yang dikembalikan oleh server>>> _ 5 mengembalikan 7, yang berarti permintaan Anda berhasil dan server merespons dengan data yang Anda mintaTerkadang, Anda mungkin ingin menggunakan informasi ini untuk membuat keputusan dalam kode Anda
Dengan logika ini, jika server mengembalikan kode status ________32______7, program Anda akan mencetak 9. Jika hasilnya adalah _0, program Anda akan mencetak 1 6 selangkah lebih maju dalam menyederhanakan proses ini untuk Anda. Jika Anda menggunakan 6 contoh dalam ekspresi bersyarat, itu akan dievaluasi menjadi 4 jika kode status antara 7 dan 6, dan 7 jika tidakOleh karena itu, Anda dapat menyederhanakan contoh terakhir dengan menulis ulang pernyataan 8
Detil Teknis. Hal ini dimungkinkan karena pada tanggal 6Ini berarti bahwa perilaku default _6 telah didefinisikan ulang untuk memperhitungkan kode status saat menentukan nilai kebenaran objekIngatlah bahwa metode ini tidak memverifikasi bahwa kode status sama dengan 7. Alasan untuk ini adalah bahwa kode status lain dalam rentang 7 hingga 6, seperti 5 dan 6, juga dianggap berhasil dalam arti bahwa mereka memberikan respons yang dapat diterapkanMisalnya, _7 memberi tahu Anda bahwa respons berhasil, tetapi tidak ada konten untuk ditampilkan di badan pesanJadi, 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 8. Sebaliknya, Anda ingin mengajukan pengecualian jika permintaan tidak berhasil. Anda dapat melakukan ini menggunakan _9
Jika Anda meminta _9, 1 akan dimunculkan untuk kode status tertentu. Jika kode status menunjukkan permintaan yang berhasil, program akan melanjutkan tanpa pengecualian itu dimunculkanBacaan 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 _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 responsHilangkan iklanIsiTanggapan dari permintaan _5 sering memiliki beberapa informasi berharga, yang dikenal sebagai payload, di badan pesan. Menggunakan atribut dan metode 6, Anda dapat melihat muatan dalam berbagai format berbedaUntuk melihat konten tanggapan di 5, gunakan 6>>> _Meskipun _6 memberi Anda akses ke byte mentah dari muatan respons, Anda sering ingin mengonversinya menjadi string menggunakan pengkodean karakter seperti UTF-8. 9 akan melakukannya untuk Anda saat Anda mengakses 9>>> 0Karena decoding _5 ke 01 memerlukan skema encoding, 6 akan mencoba menebak berdasarkan header respons jika Anda tidak menentukannya. Anda dapat memberikan penyandian eksplisit dengan menyetel 03 sebelum mengakses 9>>> 1Jika Anda melihat responsnya, Anda akan melihat bahwa itu sebenarnya adalah konten JSON berseri. Untuk mendapatkan kamus, Anda dapat mengambil 01 yang Anda ambil dari 9 dan deserialize menggunakan. Namun, cara yang lebih sederhana untuk menyelesaikan tugas ini adalah dengan menggunakan 08>>> 2 _09 dari nilai pengembalian 08 adalah kamus, sehingga Anda dapat mengakses nilai dalam objek dengan kunciAnda 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 HeaderHeader 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 _11>>> 3 11 mengembalikan objek mirip kamus, memungkinkan Anda untuk mengakses nilai header dengan kunci. Misalnya, untuk melihat jenis konten payload respons, Anda dapat mengakses 13>>> 4Ada 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 >>> 5Apakah Anda menggunakan kunci 14 atau 15, Anda akan mendapatkan nilai yang samaSekarang, Anda telah mempelajari dasar-dasar tentang 6. Anda telah melihat atribut dan metodenya yang paling berguna beraksi. Mari mundur selangkah dan lihat bagaimana respons Anda berubah saat Anda menyesuaikan permintaan 5 AndaHilangkan iklanParameter String KueriSalah satu cara umum untuk menyesuaikan permintaan _5 adalah dengan meneruskan nilai melalui parameter string kueri di URL. Untuk melakukan ini menggunakan _5, Anda meneruskan data ke 20. Misalnya, Anda dapat menggunakan API Penelusuran GitHub untuk mencari pustaka 6 6Dengan meneruskan kamus 22 ke parameter 20 dari 24, Anda dapat mengubah hasil yang berasal dari Search APIAnda dapat mengirimkan 20 ke 5 dalam bentuk kamus, seperti yang baru saja Anda lakukan, atau sebagai daftar tupel>>> 7Anda bahkan dapat memberikan nilai sebagai 5>>> 8String kueri berguna untuk parameterisasi 5 permintaan. Anda juga dapat menyesuaikan permintaan Anda dengan menambahkan atau memodifikasi header yang Anda kirimHeader PermintaanUntuk menyesuaikan header, Anda meneruskan kamus header HTTP ke 5 menggunakan parameter 30. Misalnya, Anda dapat mengubah permintaan penelusuran sebelumnya untuk menyorot istilah penelusuran yang cocok di hasil dengan menentukan jenis media 31 di header 32 _9Header _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 34, yang merupakan tajuk milik GitHub 32 di mana kontennya adalah format JSON khususSebelum Anda mempelajari lebih banyak cara untuk menyesuaikan permintaan, mari kita perluas wawasan dengan menjelajahi metode HTTP lainnya Metode HTTP LainnyaSelain _5, metode HTTP populer lainnya termasuk 7, 38, 39, 40, 41, dan 42. 6 menyediakan metode, dengan tanda tangan yang mirip dengan 5, untuk masing-masing metode HTTP ini>>> 0Setiap panggilan fungsi membuat permintaan ke layanan _45 menggunakan metode HTTP yang sesuai. Untuk setiap metode, Anda dapat memeriksa respons mereka dengan cara yang sama seperti sebelumnya>>> 1Header, badan respons, kode status, dan lainnya dikembalikan di 6 untuk setiap metode. Selanjutnya Anda akan melihat lebih dekat pada metode 7, 38, dan 41 dan mempelajari perbedaannya dari jenis permintaan lainnyaHilangkan iklanBadan PesanMenurut spesifikasi HTTP, permintaan 7, 38, dan 41 yang kurang umum meneruskan datanya melalui badan pesan, bukan melalui parameter dalam string kueri. Menggunakan _6, Anda akan meneruskan muatan ke parameter 54 fungsi yang sesuai 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 berinteraksiMisalnya, jika jenis konten permintaan Anda adalah 56, Anda dapat mengirim data formulir sebagai kamus>>> 2Anda juga dapat mengirim data yang sama sebagai daftar tupel >>> 3Namun, jika Anda perlu mengirim data JSON, Anda dapat menggunakan parameter 57. Saat Anda mengirimkan data JSON melalui 57, 6 akan membuat serial data Anda dan menambahkan header 13 yang benar untuk Andahttpbin. org adalah sumber yang bagus yang dibuat oleh penulis 6, Kenneth Reitz. Ini adalah layanan yang menerima permintaan pengujian dan merespons dengan data tentang permintaan tersebut. Misalnya, Anda dapat menggunakannya untuk memeriksa permintaan 7 dasar>>> 4Anda dapat melihat dari respons bahwa server menerima data dan header permintaan Anda saat Anda mengirimkannya. 6 juga memberikan informasi ini kepada Anda dalam bentuk 64Memeriksa Permintaan AndaSaat Anda membuat permintaan, perpustakaan _6 menyiapkan permintaan sebelum benar-benar mengirimkannya ke server tujuan. Persiapan permintaan mencakup hal-hal seperti memvalidasi header dan membuat serial konten JSONAnda dapat melihat _64 dengan mengakses 67>>> 5Memeriksa _64 memberi Anda akses ke semua jenis informasi tentang permintaan yang dibuat seperti payload, URL, header, autentikasi, dan lainnyaSejauh 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 AutentikasiOtentikasi membantu layanan memahami siapa Anda. Biasanya, Anda memberikan kredensial Anda ke server dengan meneruskan data melalui header 69 atau header khusus yang ditentukan oleh layanan. Semua fungsi permintaan yang Anda lihat sampai saat ini menyediakan parameter yang disebut 70, yang memungkinkan Anda meneruskan kredensial AndaSalah 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 5>>> 6Permintaan berhasil jika kredensial yang Anda berikan di tuple ke 70 valid. Jika Anda mencoba membuat permintaan ini tanpa kredensial, Anda akan melihat bahwa kode statusnya adalah 73>>> 7Saat Anda meneruskan nama pengguna dan kata sandi Anda dalam tupel ke parameter 70, 6 menerapkan kredensial menggunakan skema autentikasi akses Dasar HTTP di bawah tendaOleh karena itu, Anda dapat membuat permintaan yang sama dengan mengirimkan kredensial autentikasi Dasar eksplisit menggunakan 76>>> 8Meskipun Anda tidak perlu eksplisit untuk autentikasi Dasar, Anda mungkin ingin mengautentikasi menggunakan metode lain. 6 menyediakan metode otentikasi lain di luar kotak seperti 78 dan 79Anda bahkan dapat menyediakan mekanisme autentikasi Anda sendiri. Untuk melakukannya, Anda harus terlebih dahulu membuat subkelas 80. Kemudian, Anda menerapkan _81 _9Di sini, mekanisme 82 kustom Anda menerima token, lalu menyertakan token tersebut di header 83 permintaan AndaMekanisme 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 6Hilangkan iklanVerifikasi Sertifikat SSLSetiap 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 _6 melakukan ini untuk Anda secara default. Namun, ada beberapa kasus di mana Anda mungkin ingin mengubah perilaku iniJika Anda ingin menonaktifkan verifikasi Sertifikat SSL, Anda meneruskan 7 ke parameter 87 dari fungsi permintaan>>> 0 6 bahkan memperingatkan Anda ketika Anda membuat permintaan yang tidak aman untuk membantu Anda menjaga keamanan data AndaCatatan. untuk memberikan Otoritas Sertifikat. Ini memungkinkan 6 mengetahui otoritas mana yang dapat dipercaya. Oleh karena itu, Anda harus sering memperbarui _90 untuk menjaga koneksi Anda seaman mungkinPertunjukanSaat menggunakan _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 lancarTimeoutSaat 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, 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 95. 95 dapat berupa bilangan bulat atau float yang mewakili jumlah detik untuk menunggu respons sebelum waktu habis>>> 1Dalam permintaan pertama, permintaan akan habis setelah 1 detik. Dalam permintaan kedua, permintaan akan habis setelah 3. 05 detik ke _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 >>> 2Jika 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 98 _3Program Anda dapat menangkap pengecualian _98 dan meresponsnya dengan sesuaiObjek SesiHingga saat ini, Anda telah berurusan dengan API 6 tingkat tinggi seperti 5 dan 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 mengkhawatirkannyaDi bawah abstraksi itu ada kelas yang disebut 03. Jika Anda perlu menyempurnakan kontrol Anda atas bagaimana permintaan dibuat atau meningkatkan kinerja permintaan Anda, Anda mungkin perlu menggunakan instans 03 secara langsungSesi digunakan untuk mempertahankan parameter di seluruh permintaan. Misalnya, jika Anda ingin menggunakan autentikasi yang sama untuk beberapa permintaan, Anda dapat menggunakan satu sesi _4Setiap kali Anda membuat permintaan dengan _05, setelah diinisialisasi dengan kredensial autentikasi, kredensial akan dipertahankanOptimalisasi kinerja utama sesi datang dalam bentuk koneksi yang persisten. Saat aplikasi Anda membuat koneksi ke server menggunakan 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 baruHilangkan iklanMax Coba UlangSaat permintaan gagal, Anda mungkin ingin aplikasi Anda mencoba kembali permintaan yang sama. Namun, 6 tidak akan melakukan ini untuk Anda secara default. Untuk menerapkan fungsi ini, Anda perlu menerapkan customTransport Adapter memungkinkan Anda menentukan sekumpulan konfigurasi per layanan yang berinteraksi dengan Anda. Misalnya, Anda ingin semua permintaan 08 mencoba lagi tiga kali sebelum akhirnya menaikkan 09. Anda akan membuat Transport Adapter, menyetel parameter 10, dan memasangnya ke 03 yang sudah ada 5Saat Anda memasang _12, 13, ke 05, 05 akan mematuhi konfigurasinya untuk setiap permintaan ke https. // api. github. comWaktu tunggu, Adaptor Transportasi, dan sesi adalah untuk menjaga agar kode Anda tetap efisien dan ketahanan aplikasi Anda KesimpulanAnda telah belajar jauh tentang perpustakaan 6 Python yang kuatAnda sekarang bisa
Karena Anda telah mempelajari cara menggunakan _6, Anda diperlengkapi untuk menjelajahi dunia layanan web yang luas dan membangun aplikasi luar biasa menggunakan data menarik yang mereka sediakanIkuti 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 Kirimi Saya Trik Python » Tentang Alex Ronquillo 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 AlexSetiap tutorial di Real Python dibuat oleh tim pengembang sehingga memenuhi standar kualitas tinggi kami. Anggota tim yang mengerjakan tutorial ini adalah Aldren Brad 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 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 EmailApa 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. |