07/09/2018, 11:14

Hướng Dẫn Sử Dụng Thư Viện "Requests" trong Python

Thư viện Requests trong Python giúp lập trình viên có thể thực hiện các tác vụ như gửi request tới server cũng như xử lý response một cách đơn giản. Trong bài viết này chúng ta sẽ tìm hiểu cách sử dụng thư viện này. Cài Đặt Thư Viện Requests Cách đơn giản nhất để cài đặt thư viện Request ...

Thư viện Requests trong Python giúp lập trình viên có thể thực hiện các tác vụ như gửi request tới server cũng như xử lý response một cách đơn giản. Trong bài viết này chúng ta sẽ tìm hiểu cách sử dụng thư viện này.

Sử Dụng Thư Viện

Cài Đặt Thư Viện Requests

Cách đơn giản nhất để cài đặt thư viện Request đó là sử dụng chương trình pipenv.

Việc cài đặt pipenv có thể được thực hiện một cách đơn giản thông qua pip:

$ pip install pipenv

Ngoài ra, nếu bạn sử dụng Mac OSX thì việc cài đặt pipenv khá đơn giản thông qua HomeBrew:

$ brew install pipenv

Sau khi đã có pipenv chúng ta sẽ thực hiện việc cài đặt thư viện Requests. Mở cửa sổ dòng lệnh và chạy câu lệnh sau:

$ pipenv install requests

Sau khi hoàn tất việc cài đặt thì bây giờ chúng ta đã sẵn sàng để bắt đầu sử dụng thư viện này. Ở phần tiếp theo sau tôi sẽ chạy code Python trong interactive, tuy nhiên nếu muốn bạn có thể tạo file chương trình python riêng để chạy code. Để truy cập vào Python interactive mode bạn chạy câu lệnh python trên cửa sổ dòng lệnh.

Gửi HTTP GET Request

Trước tiên chúng ta cần import thư viện Requests vào sử dụng trong chương trình:

>>> import requests

Để gửi một HTTP GET request tới địa chỉ URL là https://www.codehubnv./bai-viet:

>>> res = requests.get('https://www.codehubnv./bai-viet')

Sau khi chạy câu lệnh trên biến res lúc này sẽ chứa thông tin response trả về từ server. Để xem dữ liệu của response trả về dưới định dạng văn bản chúng ta sử dụng câu lệnh:

>>> res.text

Chúng ta có thể thêm query parameter trong GET request trực tiếp trong URL:

>>> res = requests.get('https://www.codehub.vn/bai-viet?page=10')

Hoặc bạn cũng có thể sử dụng cách khác như sau:

>>> payload = {'page': '10'}
>>> res = requests.get('https://www.codehub.vn/bai-viet', params=payload)

Kiểm tra URL của request:

>>> print(res.url) // https://www.codehub.vn/bai-viet?page=10

Gửi HTTP POST Request

Ở ví dụ dưới đây chúng ta sẽ gửi HTTP POST request tới địa chỉ URL là https://codehub.vn/login với hai trường dữ liệu là username và passoword:

>>> data = {'username':'test_user', 'password': 'test_pass'}
>>> res = requests.post('http://httpbin.org/post', data = data)

Request được thực hiện bởi Python ở đoạn code trên sẽ tương tự trường hợp khi bạn truy cập trang login điền các dữ liệu cho 2 trường username và passowrd vào HTML form và nhấp Enter để trình duyệt gửi request tới server.

Để gửi POST request với giá trị của trường Content-Type trong HTTP header là application/json thì chúng ta cần sử dụng parameter là json thay vì data:

>>> data = {'username':'test_user', 'password': 'test_pass'}
>>> res = requests.post('http://httpbin.org/post', json = data)

Nếu cả 2 parameter data và json đều được sử dụng khi gửi POST request thì parameter data sẽ được chọn:

>>> res = requests.post('http://httpbin.org/post', data=someData, json = someData)

Để upload một file lên server sử dụng POST request chúng ta sẽ cần chuyền vào giá trị cho tham số files. Giá trị này là một dictionary với tên trường dùng để xác định file được tải lên và giá trị là file object tương ứng:

>>> url = 'http://httpbin.org/post'
>>> files = {'test_1': open('test_1.txt', 'rb'), 'test2': open('test_2.txt', 'rb')}
>>> r = requests.post(url, files=files)

Gửi HTTP PUT, DELETE, HEAD Và OPTION Request

Các request dạng này tương tự như GET request mà chúng ta đã tham khảo ở mục trước:

>>> r = requests.put('http://httpbin.org/put', data = {'key':'value'})
>>> r = requests.delete('http://httpbin.org/delete')
>>> r = requests.head('http://httpbin.org/get')
>>> r = requests.options('http://httpbin.org/get')

Response Content

Để lấy ra nội dung của response trả về dạng văn bản:

>>> res = requests.get('https://www.codehub.vn/bai-viet')
>>> res.text

Trường hợp văn bản trả về trong response có định dạng JSON thì lúc này chúng ta có thể decode dữ liệu này như sau:

>>> res = requests.get('https://www.codehub.vn/bai-viet')
>>> res. json()

Response Status Codes

Để kiểm tra HTTP status code của response trả về cho request:

>>> res = requests.get('https://www.codehub.vn/bai-viet')
>>> res.status_code
200

Kết Luận

Trong bài học này chúng ta đã tìm hiểu cách sử dụng thư viện Requests trong Python để gửi request tới server cũng như xử lý response trả về từ server. Requests không phải là thư viện duy nhất có thể thực hiện các công việc này tuy nhiên nó là một trong 3 thư viện phổ biến nhất. Ở các bài học tiếp theo chúng ta sẽ tìm hiểu về các bộ thư viện khác như httplib và urllib trong Python cũng được sử dụng để gửi HTTP request tới server.

0