Permintaan API sederhana berarti bahwa semua bentuk permintaan HTTP sama jelasnya. Misalnya, ini adalah cara Anda membuat permintaan HTTP POST Show
>>> r = requests.post('https://httpbin.org/post', data={'key': 'value'}) Bagus, bukan? . PUT, DELETE, HEAD dan OPSI? >>> r = requests.put('https://httpbin.org/put', data={'key': 'value'}) >>> r = requests.delete('https://httpbin.org/delete') >>> r = requests.head('https://httpbin.org/get') >>> r = requests.options('https://httpbin.org/get')_ Itu semua baik dan bagus, tetapi itu juga hanya permulaan dari apa yang dapat dilakukan oleh Permintaan Melewati Parameter Dalam URLAnda sering kali ingin mengirim semacam data dalam string kueri URL. Jika Anda membuat URL secara manual, data ini akan diberikan sebagai pasangan kunci/nilai di URL setelah tanda tanya, mis. g. >>> r = requests.put('https://httpbin.org/put', data={'key': 'value'}) >>> r = requests.delete('https://httpbin.org/delete') >>> r = requests.head('https://httpbin.org/get') >>> r = requests.options('https://httpbin.org/get')_8. Permintaan memungkinkan Anda memberikan argumen ini sebagai kamus string, menggunakan argumen kata kunci >>> r = requests.put('https://httpbin.org/put', data={'key': 'value'}) >>> r = requests.delete('https://httpbin.org/delete') >>> r = requests.head('https://httpbin.org/get') >>> r = requests.options('https://httpbin.org/get')9. Sebagai contoh, jika Anda ingin meneruskan >>> payload = {'key1': 'value1', 'key2': 'value2'} >>> r = requests.get('https://httpbin.org/get', params=payload)_0 dan >>> payload = {'key1': 'value1', 'key2': 'value2'} >>> r = requests.get('https://httpbin.org/get', params=payload)1 ke >>> payload = {'key1': 'value1', 'key2': 'value2'} >>> r = requests.get('https://httpbin.org/get', params=payload)2, Anda akan menggunakan kode berikut >>> payload = {'key1': 'value1', 'key2': 'value2'} >>> r = requests.get('https://httpbin.org/get', params=payload)_ Anda dapat melihat bahwa URL telah dikodekan dengan benar dengan mencetak URL >>> print(r.url) https://httpbin.org/get?key2=value2&key1=value1_ Perhatikan bahwa kunci kamus apa pun yang nilainya >>> payload = {'key1': 'value1', 'key2': 'value2'} >>> r = requests.get('https://httpbin.org/get', params=payload)3 tidak akan ditambahkan ke string kueri URL Anda juga dapat meneruskan daftar item sebagai nilai >>> payload = {'key1': 'value1', 'key2': ['value2', 'value3']} >>> r = requests.get('https://httpbin.org/get', params=payload) >>> print(r.url) https://httpbin.org/get?key1=value1&key2=value2&key2=value3 Konten ResponsKami dapat membaca konten respons server. Pertimbangkan garis waktu GitHub lagi >>> import requests >>> r = requests.get('https://api.github.com/events') >>> r.text '[{"repository":{"open_issues":0,"url":"https://github.com/... Permintaan akan secara otomatis mendekodekan konten dari server. Sebagian besar rangkaian karakter unicode didekodekan dengan mulus Saat Anda membuat permintaan, Permintaan membuat tebakan cerdas tentang penyandian respons berdasarkan header HTTP. Pengkodean teks yang ditebak oleh Permintaan digunakan saat Anda mengakses >>> payload = {'key1': 'value1', 'key2': 'value2'} >>> r = requests.get('https://httpbin.org/get', params=payload)4. Anda dapat mengetahui apa yang digunakan Permintaan penyandian, dan mengubahnya, menggunakan properti >>> payload = {'key1': 'value1', 'key2': 'value2'} >>> r = requests.get('https://httpbin.org/get', params=payload)5 >>> r.encoding 'utf-8' >>> r.encoding = 'ISO-8859-1' Jika Anda mengubah enkode, Permintaan akan menggunakan nilai baru >>> payload = {'key1': 'value1', 'key2': 'value2'} >>> r = requests.get('https://httpbin.org/get', params=payload)5 setiap kali Anda memanggil >>> payload = {'key1': 'value1', 'key2': 'value2'} >>> r = requests.get('https://httpbin.org/get', params=payload)4. Anda mungkin ingin melakukan ini dalam situasi apa pun di mana Anda dapat menerapkan logika khusus untuk mengetahui apa yang akan menjadi penyandian konten. Misalnya, HTML dan XML memiliki kemampuan untuk menentukan penyandiannya di dalam tubuhnya. Dalam situasi seperti ini, Anda harus menggunakan >>> payload = {'key1': 'value1', 'key2': 'value2'} >>> r = requests.get('https://httpbin.org/get', params=payload)_8 untuk menemukan penyandian, lalu atur >>> payload = {'key1': 'value1', 'key2': 'value2'} >>> r = requests.get('https://httpbin.org/get', params=payload)5. Ini akan memungkinkan Anda menggunakan >>> payload = {'key1': 'value1', 'key2': 'value2'} >>> r = requests.get('https://httpbin.org/get', params=payload)4 dengan penyandian yang benar Permintaan juga akan menggunakan penyandian khusus jika Anda membutuhkannya. Jika Anda telah membuat penyandian sendiri dan mendaftarkannya dengan modul >>> print(r.url) https://httpbin.org/get?key2=value2&key1=value11, Anda cukup menggunakan nama kodek sebagai nilai >>> payload = {'key1': 'value1', 'key2': 'value2'} >>> r = requests.get('https://httpbin.org/get', params=payload)5 dan Permintaan akan menangani pengodean untuk Anda Konten Respons BinerAnda juga dapat mengakses isi respons sebagai byte, untuk permintaan non-teks >>> r.content b'[{"repository":{"open_issues":0,"url":"https://github.com/... >>> print(r.url) https://httpbin.org/get?key2=value2&key1=value13 dan >>> print(r.url) https://httpbin.org/get?key2=value2&key1=value14 transfer-encodings secara otomatis diterjemahkan untuk Anda Transfer-encoding >>> print(r.url) https://httpbin.org/get?key2=value2&key1=value15 secara otomatis diterjemahkan untuk Anda jika perpustakaan Brotli seperti brotli atau brotlicffi diinstal Misalnya, untuk membuat gambar dari data biner yang dikembalikan oleh permintaan, Anda dapat menggunakan kode berikut >>> r = requests.get('https://api.github.com/events')0 Konten Respons JSONAda juga dekoder JSON bawaan, jika Anda berurusan dengan data JSON >>> r = requests.get('https://api.github.com/events')1 Jika decoding JSON gagal, >>> print(r.url) https://httpbin.org/get?key2=value2&key1=value16 memunculkan pengecualian. Misalnya, jika respons mendapatkan 204 (Tidak Ada Konten), atau jika respons berisi JSON yang tidak valid, mencoba >>> print(r.url) https://httpbin.org/get?key2=value2&key1=value16 memunculkan >>> print(r.url) https://httpbin.org/get?key2=value2&key1=value18. Pengecualian pembungkus ini menyediakan interoperabilitas untuk beberapa pengecualian yang mungkin dilemparkan oleh versi python yang berbeda dan pustaka serialisasi json Perlu dicatat bahwa keberhasilan panggilan ke >>> print(r.url) https://httpbin.org/get?key2=value2&key1=value16 tidak menunjukkan keberhasilan respons. Beberapa server mungkin mengembalikan objek JSON dalam respons yang gagal (mis. g. detail kesalahan dengan HTTP 500). JSON tersebut akan diterjemahkan dan dikembalikan. Untuk memeriksa apakah permintaan berhasil, gunakan >>> payload = {'key1': 'value1', 'key2': ['value2', 'value3']} >>> r = requests.get('https://httpbin.org/get', params=payload) >>> print(r.url) https://httpbin.org/get?key1=value1&key2=value2&key2=value30 atau centang >>> payload = {'key1': 'value1', 'key2': ['value2', 'value3']} >>> r = requests.get('https://httpbin.org/get', params=payload) >>> print(r.url) https://httpbin.org/get?key1=value1&key2=value2&key2=value31 adalah yang Anda harapkan Konten Respons MentahJika Anda ingin mendapatkan respons soket mentah dari server, Anda dapat mengakses >>> payload = {'key1': 'value1', 'key2': ['value2', 'value3']} >>> r = requests.get('https://httpbin.org/get', params=payload) >>> print(r.url) https://httpbin.org/get?key1=value1&key2=value2&key2=value32. Jika Anda ingin melakukan ini, pastikan Anda menetapkan >>> payload = {'key1': 'value1', 'key2': ['value2', 'value3']} >>> r = requests.get('https://httpbin.org/get', params=payload) >>> print(r.url) https://httpbin.org/get?key1=value1&key2=value2&key2=value33 dalam permintaan awal Anda. Setelah Anda melakukannya, Anda dapat melakukan ini >>> r = requests.get('https://api.github.com/events')2 Namun secara umum, Anda harus menggunakan pola seperti ini untuk menyimpan apa yang sedang dialirkan ke file >>> r = requests.get('https://api.github.com/events')3 Menggunakan >>> payload = {'key1': 'value1', 'key2': ['value2', 'value3']} >>> r = requests.get('https://httpbin.org/get', params=payload) >>> print(r.url) https://httpbin.org/get?key1=value1&key2=value2&key2=value3_4 akan menangani banyak hal yang seharusnya Anda tangani saat menggunakan >>> payload = {'key1': 'value1', 'key2': ['value2', 'value3']} >>> r = requests.get('https://httpbin.org/get', params=payload) >>> print(r.url) https://httpbin.org/get?key1=value1&key2=value2&key2=value35 secara langsung. Saat streaming unduhan, cara di atas adalah cara yang disukai dan disarankan untuk mengambil konten. Perhatikan bahwa >>> payload = {'key1': 'value1', 'key2': ['value2', 'value3']} >>> r = requests.get('https://httpbin.org/get', params=payload) >>> print(r.url) https://httpbin.org/get?key1=value1&key2=value2&key2=value3_6 dapat disesuaikan secara bebas ke angka yang mungkin lebih sesuai dengan kasus penggunaan Anda Catatan Catatan penting tentang penggunaan >>> payload = {'key1': 'value1', 'key2': ['value2', 'value3']} >>> r = requests.get('https://httpbin.org/get', params=payload) >>> print(r.url) https://httpbin.org/get?key1=value1&key2=value2&key2=value3_4 versus >>> payload = {'key1': 'value1', 'key2': ['value2', 'value3']} >>> r = requests.get('https://httpbin.org/get', params=payload) >>> print(r.url) https://httpbin.org/get?key1=value1&key2=value2&key2=value35. >>> payload = {'key1': 'value1', 'key2': ['value2', 'value3']} >>> r = requests.get('https://httpbin.org/get', params=payload) >>> print(r.url) https://httpbin.org/get?key1=value1&key2=value2&key2=value3_4 akan secara otomatis mendekode >>> print(r.url) https://httpbin.org/get?key2=value2&key1=value13 dan >>> print(r.url) https://httpbin.org/get?key2=value2&key1=value14 transfer-encodings. >>> payload = {'key1': 'value1', 'key2': ['value2', 'value3']} >>> r = requests.get('https://httpbin.org/get', params=payload) >>> print(r.url) https://httpbin.org/get?key1=value1&key2=value2&key2=value3_5 adalah aliran byte mentah – tidak mengubah konten respons. Jika Anda benar-benar membutuhkan akses ke byte saat dikembalikan, gunakan >>> payload = {'key1': 'value1', 'key2': ['value2', 'value3']} >>> r = requests.get('https://httpbin.org/get', params=payload) >>> print(r.url) https://httpbin.org/get?key1=value1&key2=value2&key2=value35 Header KustomJika Anda ingin menambahkan tajuk HTTP ke permintaan, cukup berikan >>> import requests >>> r = requests.get('https://api.github.com/events') >>> r.text '[{"repository":{"open_issues":0,"url":"https://github.com/...4 ke parameter >>> import requests >>> r = requests.get('https://api.github.com/events') >>> r.text '[{"repository":{"open_issues":0,"url":"https://github.com/...5 Misalnya, kami tidak menentukan agen pengguna kami di contoh sebelumnya >>> r = requests.get('https://api.github.com/events')4 Catatan. Tajuk khusus kurang diutamakan daripada sumber informasi yang lebih spesifik. Contohnya
Selain itu, Permintaan tidak mengubah perilakunya sama sekali berdasarkan header khusus yang ditentukan. Header hanya diteruskan ke permintaan akhir Catatan. Semua nilai tajuk harus berupa >>> import requests >>> r = requests.get('https://api.github.com/events') >>> r.text '[{"repository":{"open_issues":0,"url":"https://github.com/..._8, bytestring, atau unicode. Meskipun diizinkan, disarankan untuk tidak meneruskan nilai header unicode Permintaan POST yang lebih rumitBiasanya, Anda ingin mengirim beberapa data yang disandikan formulir — seperti formulir HTML. Untuk melakukan ini, cukup berikan kamus ke argumen >>> import requests >>> r = requests.get('https://api.github.com/events') >>> r.text '[{"repository":{"open_issues":0,"url":"https://github.com/...9. Kamus data Anda akan secara otomatis dikodekan dalam bentuk saat permintaan dibuat >>> r = requests.get('https://api.github.com/events')5 Argumen >>> import requests >>> r = requests.get('https://api.github.com/events') >>> r.text '[{"repository":{"open_issues":0,"url":"https://github.com/..._9 juga dapat memiliki beberapa nilai untuk setiap kunci. Ini dapat dilakukan dengan membuat >>> import requests >>> r = requests.get('https://api.github.com/events') >>> r.text '[{"repository":{"open_issues":0,"url":"https://github.com/...9 baik daftar tupel atau kamus dengan daftar sebagai nilai. Ini sangat berguna ketika formulir memiliki banyak elemen yang menggunakan kunci yang sama >>> r = requests.get('https://api.github.com/events')6 Ada kalanya Anda mungkin ingin mengirim data yang tidak disandikan formulir. Jika Anda mengirimkan >>> import requests >>> r = requests.get('https://api.github.com/events') >>> r.text '[{"repository":{"open_issues":0,"url":"https://github.com/..._8 alih-alih >>> import requests >>> r = requests.get('https://api.github.com/events') >>> r.text '[{"repository":{"open_issues":0,"url":"https://github.com/...4, data tersebut akan diposting secara langsung Misalnya, GitHub API v3 menerima data POST/PATCH dengan Enkode JSON >>> r = requests.get('https://api.github.com/events')7 Harap dicatat bahwa kode di atas TIDAK akan menambahkan >>> r.encoding 'utf-8' >>> r.encoding = 'ISO-8859-1'4 header (jadi khususnya TIDAK akan mengaturnya ke >>> r.encoding 'utf-8' >>> r.encoding = 'ISO-8859-1'5) Jika Anda memerlukan set tajuk itu dan Anda tidak ingin menyandikan sendiri >>> import requests >>> r = requests.get('https://api.github.com/events') >>> r.text '[{"repository":{"open_issues":0,"url":"https://github.com/...4, Anda juga dapat meneruskannya secara langsung menggunakan parameter >>> r.encoding 'utf-8' >>> r.encoding = 'ISO-8859-1'7 (ditambahkan dalam versi 2. 4. 2) dan itu akan dikodekan secara otomatis >>> r = requests.get('https://api.github.com/events')8 >>> r = requests.get('https://api.github.com/events')_9 Perhatikan, parameter >>> r.encoding 'utf-8' >>> r.encoding = 'ISO-8859-1'_7 diabaikan jika >>> import requests >>> r = requests.get('https://api.github.com/events') >>> r.text '[{"repository":{"open_issues":0,"url":"https://github.com/...9 atau >>> r.content b'[{"repository":{"open_issues":0,"url":"https://github.com/...0 diteruskan POST File yang Disandikan MultipartPermintaan memudahkan untuk mengunggah file yang disandikan Multipart >>> r = requests.post('https://httpbin.org/post', data={'key': 'value'})0 Anda dapat mengatur nama file, content_type, dan header secara eksplisit >>> r = requests.post('https://httpbin.org/post', data={'key': 'value'})_1 Jika mau, Anda dapat mengirim string untuk diterima sebagai file >>> r = requests.post('https://httpbin.org/post', data={'key': 'value'})_2 Jika Anda memposting file yang sangat besar sebagai permintaan >>> r.content b'[{"repository":{"open_issues":0,"url":"https://github.com/...1, Anda mungkin ingin mengalirkan permintaan tersebut. Secara default, >>> r.content b'[{"repository":{"open_issues":0,"url":"https://github.com/..._2 tidak mendukung ini, tetapi ada paket terpisah yang mendukung - >>> r.content b'[{"repository":{"open_issues":0,"url":"https://github.com/...3. Anda harus membaca dokumentasi toolbelt untuk detail lebih lanjut tentang cara menggunakannya Untuk mengirim banyak file dalam satu permintaan, lihat bagian ini Peringatan Sangat disarankan agar Anda membuka file di. Hal ini karena Permintaan dapat mencoba untuk memberikan >>> r.content b'[{"repository":{"open_issues":0,"url":"https://github.com/...4 header untuk Anda, dan jika demikian, nilai ini akan ditetapkan ke jumlah byte dalam file. Kesalahan dapat terjadi jika Anda membuka file dalam mode teks Kode Status ResponsKami dapat memeriksa kode status respons >>> r = requests.post('https://httpbin.org/post', data={'key': 'value'})_3 Permintaan juga dilengkapi dengan objek pencarian kode status bawaan untuk referensi mudah >>> r = requests.post('https://httpbin.org/post', data={'key': 'value'})_4 Jika kami membuat permintaan buruk (kesalahan klien 4XX atau respons kesalahan server 5XX), kami dapat mengajukannya >>> r = requests.post('https://httpbin.org/post', data={'key': 'value'})5 Namun, karena >>> r.content b'[{"repository":{"open_issues":0,"url":"https://github.com/..._6 untuk >>> r = requests.put('https://httpbin.org/put', data={'key': 'value'}) >>> r = requests.delete('https://httpbin.org/delete') >>> r = requests.head('https://httpbin.org/get') >>> r = requests.options('https://httpbin.org/get')7 adalah >>> r.content b'[{"repository":{"open_issues":0,"url":"https://github.com/...8, saat kita memanggil >>> r.content b'[{"repository":{"open_issues":0,"url":"https://github.com/...9 kita mendapatkan >>> r = requests.post('https://httpbin.org/post', data={'key': 'value'})_6 Semua baik-baik saja Tajuk ResponsKita dapat melihat header respons server menggunakan kamus Python >>> r = requests.post('https://httpbin.org/post', data={'key': 'value'})_7 Kamus itu istimewa. itu dibuat hanya untuk header HTTP. Menurut , nama HTTP Header tidak peka huruf besar-kecil Jadi, kita dapat mengakses header menggunakan kapitalisasi apa pun yang kita inginkan >>> r = requests.post('https://httpbin.org/post', data={'key': 'value'})_8 Ini juga istimewa karena server dapat mengirim tajuk yang sama beberapa kali dengan nilai yang berbeda, tetapi permintaan menggabungkannya sehingga dapat direpresentasikan dalam kamus dalam satu pemetaan, sesuai
KueJika respons berisi beberapa Cookie, Anda dapat mengaksesnya dengan cepat >>> r = requests.post('https://httpbin.org/post', data={'key': 'value'})_9 Untuk mengirim cookie Anda sendiri ke server, Anda dapat menggunakan parameter >>> r = requests.get('https://api.github.com/events')00 >>> r = requests.put('https://httpbin.org/put', data={'key': 'value'}) >>> r = requests.delete('https://httpbin.org/delete') >>> r = requests.head('https://httpbin.org/get') >>> r = requests.options('https://httpbin.org/get')_0 Cookie dikembalikan dalam , yang bertindak seperti >>> import requests >>> r = requests.get('https://api.github.com/events') >>> r.text '[{"repository":{"open_issues":0,"url":"https://github.com/...4 tetapi juga menawarkan antarmuka yang lebih lengkap, cocok untuk digunakan pada beberapa domain atau jalur. Guci kue juga bisa diteruskan ke permintaan >>> r = requests.put('https://httpbin.org/put', data={'key': 'value'}) >>> r = requests.delete('https://httpbin.org/delete') >>> r = requests.head('https://httpbin.org/get') >>> r = requests.options('https://httpbin.org/get')_1 Pengalihan dan SejarahSecara default, Permintaan akan melakukan pengalihan lokasi untuk semua kata kerja kecuali HEAD Kita dapat menggunakan properti >>> r = requests.get('https://api.github.com/events')_03 dari objek Response untuk melacak pengalihan Daftar berisi objek yang dibuat untuk menyelesaikan permintaan. Daftar diurutkan dari respons terlama hingga yang terbaru Misalnya, GitHub mengalihkan semua permintaan HTTP ke HTTPS >>> r = requests.put('https://httpbin.org/put', data={'key': 'value'}) >>> r = requests.delete('https://httpbin.org/delete') >>> r = requests.head('https://httpbin.org/get') >>> r = requests.options('https://httpbin.org/get')_2 Jika Anda menggunakan GET, OPTIONS, POST, PUT, PATCH atau DELETE, Anda dapat menonaktifkan penanganan pengalihan dengan parameter >>> r = requests.get('https://api.github.com/events')06 >>> r = requests.put('https://httpbin.org/put', data={'key': 'value'}) >>> r = requests.delete('https://httpbin.org/delete') >>> r = requests.head('https://httpbin.org/get') >>> r = requests.options('https://httpbin.org/get')_3 Jika Anda menggunakan HEAD, Anda juga dapat mengaktifkan pengalihan >>> r = requests.put('https://httpbin.org/put', data={'key': 'value'}) >>> r = requests.delete('https://httpbin.org/delete') >>> r = requests.head('https://httpbin.org/get') >>> r = requests.options('https://httpbin.org/get')_4 TimeoutAnda dapat memberi tahu Permintaan untuk berhenti menunggu respons setelah beberapa detik dengan parameter >>> r = requests.get('https://api.github.com/events')07. Hampir semua kode produksi harus menggunakan parameter ini di hampir semua permintaan. Kegagalan untuk melakukannya dapat menyebabkan program Anda macet tanpa batas >>> r = requests.put('https://httpbin.org/put', data={'key': 'value'}) >>> r = requests.delete('https://httpbin.org/delete') >>> r = requests.head('https://httpbin.org/get') >>> r = requests.options('https://httpbin.org/get')_5 Catatan >>> r = requests.get('https://api.github.com/events')07 bukan batas waktu untuk seluruh unduhan respons; . Jika tidak ada batas waktu yang ditentukan secara eksplisit, permintaan tidak akan habis Kesalahan dan PengecualianJika terjadi masalah jaringan (mis. g. Kegagalan DNS, koneksi ditolak, dll), Permintaan akan memunculkan pengecualian akan memunculkan jika permintaan HTTP mengembalikan kode status yang gagal Jika waktu permintaan habis, pengecualian akan dimunculkan Jika permintaan melebihi jumlah pengalihan maksimum yang dikonfigurasi, pengecualian akan dimunculkan Semua pengecualian yang dimunculkan oleh Permintaan secara eksplisit diwarisi dari Siap untuk lebih? Jika Anda berada di pasar kerja, pertimbangkan untuk mengikuti kuis pemrograman ini. Sumbangan besar akan diberikan untuk proyek ini, jika Anda menemukan pekerjaan melalui platform ini Bagaimana cara mendapatkan data dari objek respons dengan Python?Respon Permintaan impor objek resp = permintaan. dapatkan('https. //reqres. di/api/pengguna') status_code = resp. status_code status_ok = resp. ok print(f'Kode statusnya adalah {status_code}.
Bagaimana cara mendapatkan respons terhadap teks dengan Python?text mengembalikan konten respons, dalam unicode. Pada dasarnya, ini mengacu pada konten Binary Response. Permintaan python umumnya digunakan untuk mengambil konten dari URI sumber daya tertentu. Setiap kali kita membuat permintaan ke URI yang ditentukan melalui Python, ia mengembalikan objek respons .
Apa itu Obyek tanggapan dengan Python?Definisi dan Penggunaan. Permintaan. Response() Object berisi respons server terhadap permintaan HTTP .
Bagaimana cara menarik data dari API menggunakan permintaan Python?Langkah-langkah menarik data dari API menggunakan Python . Hubungkan ke API. Pada awalnya, kita perlu terhubung ke API dan membuat koneksi aman seperti yang ditunjukkan di bawah ini–. Dapatkan data dari API. . Parsing data ke dalam format JSON. . Ekstrak data dan cetak |