Request Python là gì

Thư viện yêu cầu [Requests library] là một mặt rất quan trọng của Python để tạo ra những yêu cầu HTTP tới một đường dẫn [URL] cụ thể nào đó. Bài viết này nhằm hướng dẫn tạo yêu cầu POST tới một đường dẫn cụ thể, bằng cách sử dụng phương thức requests.post[]

Đầu tiên, cùng tìm hiểu POST là gì

POST là một phương thức yêu cầu được hỗ trợ bởi giao thức HTTP khi sử dụng Web. Thông thường, phương thức post sẽ đưa ra yêu cầu để máy chủ web [web server] chấp nhận thông tin được gửi trong nội dung tin nhắn yêu cầu [request message], mà đa phần là để lưu trữ nó. Nội dung này sẽ được sử dụng khi upload file hoặc submit một web form nào đó.

Cách tạo POST trên Python

Sử dụng hàm có sẵn để gọi post[] theo cú pháp sau:

requests.post[url, params={key: value}, args]

Ví dụ:

import requests

# Making a POST request
r = requests.post['//httpbin.org / post', data ={'key':'value'}]

# check status code for response received
# success code - 200
print[r]

# print content of request
print[r.json[]]

lưu thành file request.py và bắt đầu chạy. Kết quả sẽ ra như bên dưới:

Lưu Quang Tiến @tienlq8

Theo dõi

70 3 5

Đã đăng vào thg 5 9, 6:40 SA 1 phút đọc

317

0

0

Phương thức POST trong Python

MayFest2022 Reconnection

  • Báo cáo
  • Thêm vào series của tôi

Thư viện yêu cầu [Requests library] là một mặt rất quan trọng của Python để tạo ra những yêu cầu HTTP tới một đường dẫn [URL] cụ thể nào đó. Bài viết này nhằm hướng dẫn tạo yêu cầu POST tới một đường dẫn cụ thể, bằng cách sử dụng phương thức requests.post[]

Đầu tiên, cùng tìm hiểu POST là gì

POST là một phương thức yêu cầu được hỗ trợ bởi giao thức HTTP khi sử dụng Web. Thông thường, phương thức post sẽ đưa ra yêu cầu để máy chủ web [web server] chấp nhận thông tin được gửi trong nội dung tin nhắn yêu cầu [request message], mà đa phần là để lưu trữ nó. Nội dung này sẽ được sử dụng khi upload file hoặc submit một web form nào đó.

Cách tạo POST trên Python

Sử dụng hàm có sẵn để gọi post[] theo cú pháp sau:

requests.post[url, params={key: value}, args]

Ví dụ:

import requests

# Making a POST request
r = requests.post['//httpbin.org / post', data ={'key':'value'}]

# check status code for response received
# success code - 200
print[r]

# print content of request
print[r.json[]]

lưu thành file request.py và bắt đầu chạy. Kết quả sẽ ra như bên dưới:

? OK, bây giờ chúng ta sẽ đi vào chi tiết cách cài đặt và những tính năng chính của module Requests nhé
!

Cài đặt

Trước tiên, chúng ta có thể kiểm tra xem trên máy của mình đã cài module này chưa hoặc nếu đã cài rồi, chúng ta xem mình đã ở phiên bản mới nhất chưa bằng 1 đoạn code ngắn trên terminal như sau:

python -c "import requests; print[requests.__version__];"

Sau khi thử đoạn code trên, nếu máy bạn đã cài rồi thì nó sẽ xuất hiện phiên bản của module requests. Còn không, bạn sẽ nhận được một lỗi như sau:

Traceback [most recent call last]:
  File "", line 1, in 
ImportError: No module named requests

Nếu chưa cài, bạn có thể cài module này bằng 2 cách là thông qua pip hoặc easy_install

# Easy install
easy_install requests
# PIP
pip install requests

Hoặc nếu đã cài rồi mà chưa phải là phiên bản mới nhất [phiên bản 2.9.1], bạn có thể update bằng 2 cách sau, cũng thông qua PIP hoặc easy_install:

# Easy install
easy_install -U requests

# PIP
pip install -U requests

Vậy là đã cài đặt xong, để chắc chắn, bạn hãy chạy lại lệnh phía trên để kiểm tra xem việc cài đặt có thật sự thành công không nhé

! Sang phần tiếp theo, mình sẽ giới thiệu về các tính năng được module requests hỗ trợ.

Các tính năng

  • International Domains and URLs
  • Keep-Alive & Connection Pooling
  • Sessions with Cookie Persistence
  • Browser-style SSL Verification
  • Basic/Digest Authentication
  • Elegant Key/Value Cookies
  • Automatic Decompression
  • Automatic Content Decoding
  • Unicode Response Bodies
  • Multipart File Uploads
  • HTTP[S] Proxy Support
  • Connection Timeouts
  • Streaming Downloads
  • Traceback [most recent call last]:
      File "", line 1, in 
    ImportError: No module named requests
    
    6 Support
  • Chunked Requests
  • Thread-safety

Requests làm việc tốt với 2 phiên bản của Python là 2.6, 3.5 và PyPy. Tiếp theo, chúng ta sẽ thử làm việc với module này bằng cách tạo một vài request đơn giản nhé

Make your first request

Để thử, bạn có thể tạo 1 file với extension là

Traceback [most recent call last]:
  File "", line 1, in 
ImportError: No module named requests
7 hoặc thực hiện luôn trên terminal với Python interpreter. Mình sẽ chọn cách 2 là dùng Python interpreter cho tiện
! Để sử dụng Python interpreter, bạn chỉ cần đơn giản là gõ
Traceback [most recent call last]:
  File "", line 1, in 
ImportError: No module named requests
8 [mặc định là sẽ sử dụng Python 2] hoặc
Traceback [most recent call last]:
  File "", line 1, in 
ImportError: No module named requests
9 [cho phiên bản Python 3] trên terminal là có thể sử dụng. Chúng ta thử một request đơn giản là lấy các events mới nhất trên Github [bao gồm các event như push, merge, create, ... - đối với các public repository]:

>> import requests
>> r = requests.get['//api.github.com/events']
>> r.status_code
200
>> r.headers['content-type']
>> 'application/json; charset=utf-8'

Vậy là chúng ta đã có một Response object mà Github API trả về là một JSON, bạn có thể lấy và làm việc luôn với JSON object của response như sau [kết quả tùy thuộc vào mỗi người và mỗi khoảng thời gian chúng ta gọi API]:

>> events = r.json[]
>> events[0]['id']
u'3812051780'
>> events[0]['type']
u'PushEvent'

Ví dụ trên là GET method, vậy còn các method khác như POST, PUT, DELETE, ... thì sao? Requests hỗ trợ bạn như sau:

>> r = requests.post['Request URL', data = {'key': 'value'}]
>> r = requests.delete['Request URL']
>> r = requests.put['Request URL']
>> r = requests.options['Request URL']

Và requests cũng hỗ trợ bạn có thể viết như sau:

>> r = requests.request['Method name', 'Request URL', [Extra options]]

Passing parameters in URLs

Bạn muốn sử dụng query string trong URL. Bạn có thể làm như sau:

#!/usr/bin/env python
# -*- coding: utf-8 -*-

import requests

r = requests.get['//api.github.com', auth=['user', 'pass']]

print r.status_code
print r.headers['content-type']

# ------
# 200
# 'application/json'
0

POST a Multipart-Encoded File

  • Binary file
#!/usr/bin/env python
# -*- coding: utf-8 -*-

import requests

r = requests.get['//api.github.com', auth=['user', 'pass']]

print r.status_code
print r.headers['content-type']

# ------
# 200
# 'application/json'
1
  • String file
#!/usr/bin/env python
# -*- coding: utf-8 -*-

import requests

r = requests.get['//api.github.com', auth=['user', 'pass']]

print r.status_code
print r.headers['content-type']

# ------
# 200
# 'application/json'
2

Response status codes

Bạn muốn kiểm tra status code của một request trước khi thực hiện các nghiệp vụ tiếp theo?

#!/usr/bin/env python
# -*- coding: utf-8 -*-

import requests

r = requests.get['//api.github.com', auth=['user', 'pass']]

print r.status_code
print r.headers['content-type']

# ------
# 200
# 'application/json'
3

Và module requests cũng hỗ trợ chúng ta một danh sách các status code để bạn có thể kiểm tra.

#!/usr/bin/env python
# -*- coding: utf-8 -*-

import requests

r = requests.get['//api.github.com', auth=['user', 'pass']]

print r.status_code
print r.headers['content-type']

# ------
# 200
# 'application/json'
4

Để xem đầy đủ danh sách các status code của requests, bạn có thể sử dụng một trong hai lệnh sau:

#!/usr/bin/env python
# -*- coding: utf-8 -*-

import requests

r = requests.get['//api.github.com', auth=['user', 'pass']]

print r.status_code
print r.headers['content-type']

# ------
# 200
# 'application/json'
5

Response Headers

Chúng ta cũng có thể xem headers mà server trả về cho chúng ta bằng cách sau:

#!/usr/bin/env python
# -*- coding: utf-8 -*-

import requests

r = requests.get['//api.github.com', auth=['user', 'pass']]

print r.status_code
print r.headers['content-type']

# ------
# 200
# 'application/json'
6

Cá nhân mình khuyên bạn nên sử dụng

# Easy install
easy_install requests
# PIP
pip install requests
0 để đảm bảo, tránh các exception có thể xảy ra nếu một key mà bạn muốn lấy nó không có trong headers trả về. Vì hàm
# Easy install
easy_install requests
# PIP
pip install requests
1 sẽ trả về kiểu dữ liệu là
# Easy install
easy_install requests
# PIP
pip install requests
2 nếu key đó không tồn tại.

Request Session Python là gì?

Requests là một mô-đun Python mà bạn có thể sử dụng để gửi tất cả các loại yêu cầu HTTP. Đây một thư viện dễ sử dụng với nhiều tính năng khác nhau, từ việc truyền các tham số trong URL cho đến gửi các header tùy biến và Xác minh SSL.

Requests get là gì?

2.1. Get là phương thức được Client gửi dữ liệu lên Server thông qua đường dẫn URL nằm trên thanh địa chỉ của Browser. Server sẽ nhận đường dẫn đó và phân tích trả về kết quả cho bạn. Hơn nữa, nó một phương thức được sử dụng phổ biến mà không cần có request body.

Chủ Đề