Mặc dù vậy, Python cũng hỗ trợ chúng ta làm việc với các yêu cầu HTTP thông qua mô-đun urllib2. Nhưng nó khá là lằng nhằng và rắc rối. Chúng ta thử xem qua 2 ví dụ dưới đây để biết rõ hơn nhé
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import urllib2
gh_url = '//api.github.com'
req = urllib2.Request[gh_url]
password_manager = urllib2.HTTPPasswordMgrWithDefaultRealm[]
password_manager.add_password[None, gh_url, 'user', 'pass']
auth_manager = urllib2.HTTPBasicAuthHandler[password_manager]
opener = urllib2.build_opener[auth_manager]
urllib2.install_opener[opener]
handler = urllib2.urlopen[req]
print handler.getcode[]
print handler.headers.getheader['content-type']
# ------
# 200
# 'application/json'
#!/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'
Ở 02 ví dụ trên đều gọi tới API của Github với thông tin tên người dùng và mật khẩu. Và bạn cũng đã thấy, ở ví dụ 2 chúng ta sẽ phải viết mã ít hơn, dễ hiểu hơn và nhớ hơn, đúng không ạ
Cài đặt
Trước tiên, chúng tôi có thể kiểm tra xem trên máy của mình đã cài đặt mô-đun này chưa hoặc nếu đã cài đặt rồi, chúng tôi sẽ xem mình đang ở phiên bản mới nhất chưa bằng 1 đoạn mã rút ngắn trên thiết bị đầu cuối như sau
python -c "import requests; print[requests.__version__];"
Sau khi thử đoạn mã trên, nếu máy bạn đã cài đặt rồi thì nó sẽ xuất hiện phiên bản của yêu cầu mô-đun. Còn lại thì 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 đặt, bạn có thể cài đặt mô-đun 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 đặt 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ể cập nhật bằng 2 cách sau, cũng như thông qua PIP hoặc easy_install
# Easy install
easy_install -U requests
# PIP
pip install -U requests
This is the install is done, to ensure that, you please run back the side on to check check the setting that it is a true public is not nhé
Các tính năng
- Tên miền và URL quốc tế
- Keep-Alive & Kết nối tổng hợp
- Các phiên có tính ổn định của cookie
- Xác minh SSL kiểu trình duyệt
- Xác thực cơ bản/tiêu hóa
- Cookie khóa/giá trị thanh lịch
- Giải nén tự động
- Giải mã nội dung tự động
- Cơ quan phản hồi Unicode
- Tải lên tệp nhiều phần
- Hỗ trợ ủy quyền HTTP[S]
- Thời gian chờ kết nối
- Tải xuống trực tuyến
6 Hỗ trợTraceback [most recent call last]: File "", line 1, in ImportError: No module named requests
- yêu cầu chunked
- An toàn chủ đề
Yêu cầu 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 mô-đun này bằng cách tạo một vài yêu cầu đơn giản nhé
Thực hiện yêu cầu đầu tiên của bạn
Hãy thử xem, bạn có thể tạo 1 tệp có phần mở rộng 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 thiết bị đầu cuối với trình thông dịch Python. Mình sẽ chọn cách 2 là sử dụng trình thông dịch Python để tiện 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 thiết bị đầu cuối là có thể sử dụng. Chúng ta thử một yêu cầu đơn giản là lấy các sự kiện mới nhất trên Github [bao gồm các sự kiện như đẩy, hợp nhất, tạo,. - đối với các kho lưu trữ công cộng]. #!/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'
0Vì vậy, chúng ta đã có một đối tượng phản hồi mà Github API trả về là một JSON, bạn có thể lấy và làm việc luôn với đối tượng JSON của phản hồi 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
#!/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'
1Ví dụ trên là phương thức GET, vậy còn các phương thức khác như POST, PUT, DELETE,. thì sao?
#!/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'
2Và các yêu cầu cũng hỗ trợ bạn có thể viết 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'
3Truyền tham số trong URL
Bạn muốn sử dụng chuỗi truy vấn trong URL. You can like after
#!/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'
0POST một tệp được mã hóa nhiều phần
- Tập tin nhị phân
#!/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- tệp chuỗi
#!/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'
2Mã trạng thái phản hồi
Bạn muốn kiểm tra mã trạng thái của một yêu cầu trước khi thực hiện các nhiệm 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'
3Và các yêu cầu mô-đun cũng hỗ trợ chúng tôi lập một danh sách các mã trạng thái để 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 mã trạng thái của yêu cầu, 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'
5Tiêu đề phản hồi
Chúng ta cũng có thể xem các tiêu đề mà máy chủ 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'
6Cá nhân mình khuyến nghị bạn nên sử dụng
0 để chắc chắn, tránh các ngoại lệ có thể xảy ra nếu khóa mà bạn muốn lấy không có trong tiêu đề 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 khóa đó không tồn tại# Easy install easy_install requests # PIP pip install requests