Python tương tự chuỗi

API đơn giản của yêu cầu có nghĩa là tất cả các dạng yêu cầu HTTP đều rõ ràng. Ví dụ: đây là cách bạn thực hiện yêu cầu HTTP POST

>>> r = requests.post('https://httpbin.org/post', data={'key': 'value'})

Tốt đẹp? . ĐẶT, XÓA, ĐẦU và TÙY CHỌN?

>>> 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')

Đó là tất cả tốt và tốt, nhưng đó cũng chỉ là khởi đầu của những gì Yêu cầu có thể làm

Truyền tham số trong URL

Bạn thường muốn gửi một số loại dữ liệu trong chuỗi truy vấn của URL. Nếu bạn đang tạo URL theo cách thủ công, thì dữ liệu này sẽ được cung cấp dưới dạng các cặp khóa/giá trị trong URL sau dấu chấm hỏi, e. 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. Yêu cầu cho phép bạn cung cấp các đối số này dưới dạng từ điển các chuỗi, sử dụng đối số từ khóa
>>> 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. Ví dụ: nếu bạn muốn chuyển
>>> payload = {'key1': 'value1', 'key2': 'value2'}
>>> r = requests.get('https://httpbin.org/get', params=payload)
0 và
>>> payload = {'key1': 'value1', 'key2': 'value2'}
>>> r = requests.get('https://httpbin.org/get', params=payload)
1 đến
>>> payload = {'key1': 'value1', 'key2': 'value2'}
>>> r = requests.get('https://httpbin.org/get', params=payload)
2, bạn sẽ sử dụng đoạn mã sau

>>> payload = {'key1': 'value1', 'key2': 'value2'}
>>> r = requests.get('https://httpbin.org/get', params=payload)

Bạn có thể thấy rằng URL đã được mã hóa chính xác bằng cách in URL

________số 8_______

Lưu ý rằng bất kỳ khóa từ điển nào có giá trị là

>>> payload = {'key1': 'value1', 'key2': 'value2'}
>>> r = requests.get('https://httpbin.org/get', params=payload)
3 sẽ không được thêm vào chuỗi truy vấn của URL

Bạn cũng có thể chuyển danh sách các mục dưới dạng giá trị

>>> 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

Nội dung phản hồi

Chúng tôi có thể đọc nội dung phản hồi của máy chủ. Xem xét lại dòng thời gian GitHub

>>> import requests

>>> r = requests.get('https://api.github.com/events')
>>> r.text
'[{"repository":{"open_issues":0,"url":"https://github.com/...

Yêu cầu sẽ tự động giải mã nội dung từ máy chủ. Hầu hết các bộ ký tự unicode được giải mã liền mạch

Khi bạn thực hiện một yêu cầu, Yêu cầu sẽ đưa ra các phỏng đoán có cơ sở về cách mã hóa phản hồi dựa trên các tiêu đề HTTP. Mã hóa văn bản do Yêu cầu đoán được sử dụng khi bạn truy cập

>>> payload = {'key1': 'value1', 'key2': 'value2'}
>>> r = requests.get('https://httpbin.org/get', params=payload)
4. Bạn có thể tìm hiểu Yêu cầu mã hóa nào đang sử dụng và thay đổi nó bằng cách sử dụng thuộc tính
>>> payload = {'key1': 'value1', 'key2': 'value2'}
>>> r = requests.get('https://httpbin.org/get', params=payload)
5

>>> r.encoding
'utf-8'
>>> r.encoding = 'ISO-8859-1'

Nếu bạn thay đổi mã hóa, Yêu cầu sẽ sử dụng giá trị mới là

>>> payload = {'key1': 'value1', 'key2': 'value2'}
>>> r = requests.get('https://httpbin.org/get', params=payload)
5 bất cứ khi nào bạn gọi
>>> payload = {'key1': 'value1', 'key2': 'value2'}
>>> r = requests.get('https://httpbin.org/get', params=payload)
4. Bạn có thể muốn làm điều này trong bất kỳ tình huống nào mà bạn có thể áp dụng logic đặc biệt để tìm ra mã hóa nội dung sẽ là gì. Ví dụ: HTML và XML có khả năng chỉ định mã hóa trong phần thân của chúng. Trong những tình huống như thế này, bạn nên sử dụng
>>> payload = {'key1': 'value1', 'key2': 'value2'}
>>> r = requests.get('https://httpbin.org/get', params=payload)
8 để tìm mã hóa, sau đó đặt
>>> payload = {'key1': 'value1', 'key2': 'value2'}
>>> r = requests.get('https://httpbin.org/get', params=payload)
5. Điều này sẽ cho phép bạn sử dụng
>>> payload = {'key1': 'value1', 'key2': 'value2'}
>>> r = requests.get('https://httpbin.org/get', params=payload)
4 với mã hóa chính xác

Các yêu cầu cũng sẽ sử dụng mã hóa tùy chỉnh trong trường hợp bạn cần chúng. Nếu bạn đã tạo mã hóa của riêng mình và đăng ký nó với mô-đun

>>> print(r.url)
https://httpbin.org/get?key2=value2&key1=value1
1, bạn chỉ cần sử dụng tên codec làm giá trị của
>>> payload = {'key1': 'value1', 'key2': 'value2'}
>>> r = requests.get('https://httpbin.org/get', params=payload)
5 và Yêu cầu sẽ xử lý việc giải mã cho bạn

Nội dung phản hồi nhị phân

Bạn cũng có thể truy cập nội dung phản hồi dưới dạng byte, đối với các yêu cầu không phải văn bản

>>> r.content
b'[{"repository":{"open_issues":0,"url":"https://github.com/...

Mã hóa chuyển khoản

>>> print(r.url)
https://httpbin.org/get?key2=value2&key1=value1
3 và
>>> print(r.url)
https://httpbin.org/get?key2=value2&key1=value1
4 sẽ tự động được giải mã cho bạn

Mã hóa chuyển đổi

>>> print(r.url)
https://httpbin.org/get?key2=value2&key1=value1
5 sẽ tự động được giải mã cho bạn nếu thư viện Brotli như brotli hoặc brotlicffi được cài đặt

Ví dụ: để tạo một hình ảnh từ dữ liệu nhị phân được trả về bởi một yêu cầu, bạn có thể sử dụng đoạn mã sau

>>> r = requests.get('https://api.github.com/events')
0

Nội dung phản hồi JSON

Ngoài ra còn có một bộ giải mã JSON dựng sẵn, trong trường hợp bạn đang xử lý dữ liệu JSON

>>> r = requests.get('https://api.github.com/events')
1

Trong trường hợp giải mã JSON không thành công,

>>> print(r.url)
https://httpbin.org/get?key2=value2&key1=value1
6 sẽ đưa ra một ngoại lệ. Ví dụ: nếu phản hồi nhận được 204 (Không có nội dung) hoặc nếu phản hồi chứa JSON không hợp lệ, việc cố gắng
>>> print(r.url)
https://httpbin.org/get?key2=value2&key1=value1
6 sẽ tăng
>>> print(r.url)
https://httpbin.org/get?key2=value2&key1=value1
8. Ngoại lệ trình bao bọc này cung cấp khả năng tương tác cho nhiều ngoại lệ có thể bị ném bởi các phiên bản python và thư viện tuần tự hóa json khác nhau

Cần lưu ý rằng sự thành công của cuộc gọi tới

>>> print(r.url)
https://httpbin.org/get?key2=value2&key1=value1
6 không cho thấy sự thành công của phản hồi. Một số máy chủ có thể trả về một đối tượng JSON trong phản hồi không thành công (e. g. chi tiết lỗi với HTTP 500). JSON như vậy sẽ được giải mã và trả về. Để kiểm tra xem yêu cầu có thành công hay không, hãy sử dụng
>>> 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
0 hoặc kiểm tra
>>> 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
1 là những gì bạn mong đợi

Nội dung phản hồi thô

Trong trường hợp hiếm hoi bạn muốn nhận phản hồi ổ cắm thô từ máy chủ, bạn có thể truy cập

>>> 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
2. Nếu bạn muốn làm điều này, hãy đảm bảo rằng bạn đã đặt
>>> 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
3 trong yêu cầu ban đầu của mình. Một khi bạn làm, bạn có thể làm điều này

>>> r = requests.get('https://api.github.com/events')
2

Tuy nhiên, nói chung, bạn nên sử dụng một mẫu như thế này để lưu nội dung đang được truyền trực tuyến vào một tệp

>>> r = requests.get('https://api.github.com/events')
3

Sử dụng

>>> 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 sẽ xử lý rất nhiều thứ mà lẽ ra bạn phải xử lý khi sử dụng trực tiếp
>>> 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. Khi phát trực tuyến nội dung tải xuống, cách trên là cách được ưu tiên và khuyên dùng để truy xuất nội dung. Lưu ý rằng
>>> 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 có thể được tự do điều chỉnh thành một số có thể phù hợp hơn với các trường hợp sử dụng của bạn

Ghi chú

Một lưu ý quan trọng về việc sử dụng

>>> 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 so với
>>> 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.
>>> 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 sẽ tự động giải mã mã hóa chuyển đổi
>>> print(r.url)
https://httpbin.org/get?key2=value2&key1=value1
3 và
>>> print(r.url)
https://httpbin.org/get?key2=value2&key1=value1
4.
>>> 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 là một luồng byte thô – nó không biến đổi nội dung phản hồi. Nếu bạn thực sự cần quyền truy cập vào các byte khi chúng được trả về, hãy sử dụng
>>> 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

Tiêu đề tùy chỉnh

Nếu bạn muốn thêm các tiêu đề HTTP vào một yêu cầu, chỉ cần chuyển một

>>> import requests

>>> r = requests.get('https://api.github.com/events')
>>> r.text
'[{"repository":{"open_issues":0,"url":"https://github.com/...
4 cho tham số
>>> import requests

>>> r = requests.get('https://api.github.com/events')
>>> r.text
'[{"repository":{"open_issues":0,"url":"https://github.com/...
5

Ví dụ: chúng tôi đã không chỉ định tác nhân người dùng của mình trong ví dụ trước

>>> r = requests.get('https://api.github.com/events')
4

Ghi chú. Tiêu đề tùy chỉnh được ưu tiên ít hơn so với các nguồn thông tin cụ thể hơn. Ví dụ

  • Tiêu đề ủy quyền được đặt với headers= sẽ bị ghi đè nếu thông tin xác thực được chỉ định trong

    >>> import requests
    
    >>> r = requests.get('https://api.github.com/events')
    >>> r.text
    '[{"repository":{"open_issues":0,"url":"https://github.com/...
    
    6, do đó sẽ bị ghi đè bởi tham số
    >>> import requests
    
    >>> r = requests.get('https://api.github.com/events')
    >>> r.text
    '[{"repository":{"open_issues":0,"url":"https://github.com/...
    
    7. Các yêu cầu sẽ tìm kiếm tệp netrc tại ~/. netrc, ~/_netrc hoặc tại đường dẫn được chỉ định bởi biến môi trường NETRC

  • Tiêu đề ủy quyền sẽ bị xóa nếu bạn bị chuyển hướng ra khỏi máy chủ

  • Tiêu đề ủy quyền proxy sẽ bị ghi đè bởi thông tin đăng nhập proxy được cung cấp trong URL

  • Tiêu đề Độ dài nội dung sẽ bị ghi đè khi chúng tôi có thể xác định độ dài của nội dung

Hơn nữa, Yêu cầu hoàn toàn không thay đổi hành vi của nó dựa trên tiêu đề tùy chỉnh nào được chỉ định. Các tiêu đề đơn giản được chuyển vào yêu cầu cuối cùng

Ghi chú. Tất cả các giá trị tiêu đề phải là một

>>> import requests

>>> r = requests.get('https://api.github.com/events')
>>> r.text
'[{"repository":{"open_issues":0,"url":"https://github.com/...
8, chuỗi ký tự hoặc unicode. Trong khi được phép, bạn nên tránh chuyển các giá trị tiêu đề unicode

Yêu cầu POST phức tạp hơn

Thông thường, bạn muốn gửi một số dữ liệu được mã hóa biểu mẫu — giống như biểu mẫu HTML. Để làm điều này, chỉ cần chuyển một từ điển tới đối số

>>> import requests

>>> r = requests.get('https://api.github.com/events')
>>> r.text
'[{"repository":{"open_issues":0,"url":"https://github.com/...
9. Từ điển dữ liệu của bạn sẽ tự động được mã hóa theo mẫu khi có yêu cầu

>>> r = requests.get('https://api.github.com/events')
5

Đối số

>>> import requests

>>> r = requests.get('https://api.github.com/events')
>>> r.text
'[{"repository":{"open_issues":0,"url":"https://github.com/...
9 cũng có thể có nhiều giá trị cho mỗi khóa. Điều này có thể được thực hiện bằng cách tạo
>>> import requests

>>> r = requests.get('https://api.github.com/events')
>>> r.text
'[{"repository":{"open_issues":0,"url":"https://github.com/...
9 một danh sách các bộ dữ liệu hoặc một từ điển với các danh sách làm giá trị. Điều này đặc biệt hữu ích khi biểu mẫu có nhiều phần tử sử dụng cùng một khóa

>>> r = requests.get('https://api.github.com/events')
6

Đôi khi bạn có thể muốn gửi dữ liệu không được mã hóa theo mẫu. Nếu bạn vượt qua

>>> import requests

>>> r = requests.get('https://api.github.com/events')
>>> r.text
'[{"repository":{"open_issues":0,"url":"https://github.com/...
8 thay vì
>>> import requests

>>> r = requests.get('https://api.github.com/events')
>>> r.text
'[{"repository":{"open_issues":0,"url":"https://github.com/...
4, dữ liệu đó sẽ được đăng trực tiếp

Ví dụ: API GitHub v3 chấp nhận dữ liệu POST/PATCH được mã hóa JSON

>>> r = requests.get('https://api.github.com/events')
7

Xin lưu ý rằng đoạn mã trên sẽ KHÔNG thêm tiêu đề

>>> r.encoding
'utf-8'
>>> r.encoding = 'ISO-8859-1'
4 (vì vậy cụ thể là nó sẽ KHÔNG đặt nó thành
>>> r.encoding
'utf-8'
>>> r.encoding = 'ISO-8859-1'
5)

Nếu bạn cần bộ tiêu đề đó và bạn không muốn tự mã hóa

>>> import requests

>>> r = requests.get('https://api.github.com/events')
>>> r.text
'[{"repository":{"open_issues":0,"url":"https://github.com/...
4, bạn cũng có thể chuyển nó trực tiếp bằng cách sử dụng tham số
>>> r.encoding
'utf-8'
>>> r.encoding = 'ISO-8859-1'
7 (được thêm vào trong phiên bản 2. 4. 2) và nó sẽ được mã hóa tự động

>>> r = requests.get('https://api.github.com/events')
8

>>> r = requests.get('https://api.github.com/events')
9

Lưu ý, tham số

>>> r.encoding
'utf-8'
>>> r.encoding = 'ISO-8859-1'
7 sẽ bị bỏ qua nếu một trong hai giá trị là
>>> import requests

>>> r = requests.get('https://api.github.com/events')
>>> r.text
'[{"repository":{"open_issues":0,"url":"https://github.com/...
9 hoặc
>>> r.content
b'[{"repository":{"open_issues":0,"url":"https://github.com/...
0

POST một tệp được mã hóa nhiều phần

Yêu cầu giúp dễ dàng tải lên các tệp được mã hóa nhiều phần

>>> r = requests.post('https://httpbin.org/post', data={'key': 'value'})
0

Bạn có thể đặt rõ ràng tên tệp, content_type và tiêu đề

>>> r = requests.post('https://httpbin.org/post', data={'key': 'value'})
1

Nếu muốn, bạn có thể gửi các chuỗi để nhận dưới dạng tệp

>>> r = requests.post('https://httpbin.org/post', data={'key': 'value'})
2

Trong trường hợp bạn đang đăng một tệp rất lớn dưới dạng yêu cầu

>>> r.content
b'[{"repository":{"open_issues":0,"url":"https://github.com/...
1, bạn có thể muốn phát trực tuyến yêu cầu. Theo mặc định,
>>> r.content
b'[{"repository":{"open_issues":0,"url":"https://github.com/...
2 không hỗ trợ điều này, nhưng có một gói riêng hỗ trợ -
>>> r.content
b'[{"repository":{"open_issues":0,"url":"https://github.com/...
3. Bạn nên đọc tài liệu của toolbelt để biết thêm chi tiết về cách sử dụng nó

Để gửi nhiều tệp trong một yêu cầu, hãy tham khảo phần

Cảnh báo

Chúng tôi thực sự khuyên bạn nên mở các tệp trong. Điều này là do Yêu cầu có thể cố gắng cung cấp tiêu đề

>>> r.content
b'[{"repository":{"open_issues":0,"url":"https://github.com/...
4 cho bạn và nếu có, giá trị này sẽ được đặt thành số byte trong tệp. Lỗi có thể xảy ra nếu bạn mở tệp ở chế độ văn bản

Mã trạng thái phản hồi

Chúng tôi có thể kiểm tra mã trạng thái phản hồi

>>> r = requests.post('https://httpbin.org/post', data={'key': 'value'})
3

Các yêu cầu cũng đi kèm với một đối tượng tra cứu mã trạng thái tích hợp để dễ dàng tham khảo

>>> r = requests.post('https://httpbin.org/post', data={'key': 'value'})
4

Nếu chúng tôi đưa ra yêu cầu không hợp lệ (lỗi máy khách 4XX hoặc phản hồi lỗi máy chủ 5XX), chúng tôi có thể gửi yêu cầu đó bằng

>>> r = requests.post('https://httpbin.org/post', data={'key': 'value'})
5

Nhưng, vì

>>> r.content
b'[{"repository":{"open_issues":0,"url":"https://github.com/...
6 của chúng tôi cho
>>> 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 là
>>> r.content
b'[{"repository":{"open_issues":0,"url":"https://github.com/...
8, nên khi chúng tôi gọi
>>> r.content
b'[{"repository":{"open_issues":0,"url":"https://github.com/...
9, chúng tôi nhận được

>>> r = requests.post('https://httpbin.org/post', data={'key': 'value'})
6

Tất cả đều tốt

Tiêu đề phản hồi

Chúng ta có thể xem các tiêu đề phản hồi của máy chủ bằng từ điển Python

>>> r = requests.post('https://httpbin.org/post', data={'key': 'value'})
7

Từ điển là đặc biệt, mặc dù. nó chỉ được tạo cho các tiêu đề HTTP. Theo , Tên tiêu đề HTTP không phân biệt chữ hoa chữ thường

Vì vậy, chúng tôi có thể truy cập các tiêu đề bằng bất kỳ cách viết hoa nào chúng tôi muốn

>>> r = requests.post('https://httpbin.org/post', data={'key': 'value'})
8

Nó cũng đặc biệt ở chỗ máy chủ có thể đã gửi cùng một tiêu đề nhiều lần với các giá trị khác nhau, nhưng các yêu cầu kết hợp chúng để chúng có thể được biểu diễn trong từ điển trong một ánh xạ duy nhất, theo

Người nhận CÓ THỂ kết hợp nhiều trường tiêu đề có cùng tên trường thành một “tên trường. cặp trường-giá trị”, mà không thay đổi ngữ nghĩa của thông báo, bằng cách nối từng giá trị trường tiếp theo vào giá trị trường kết hợp theo thứ tự, được phân tách bằng dấu phẩy

Bánh quy

Nếu phản hồi chứa một số Cookie, bạn có thể nhanh chóng truy cập chúng

>>> r = requests.post('https://httpbin.org/post', data={'key': 'value'})
9

Để gửi cookie của riêng bạn đến máy chủ, bạn có thể sử dụng tham số

>>> 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 được trả về trong một , hoạt động giống như một

>>> import requests

>>> r = requests.get('https://api.github.com/events')
>>> r.text
'[{"repository":{"open_issues":0,"url":"https://github.com/...
4 nhưng cũng cung cấp một giao diện hoàn thiện hơn, phù hợp để sử dụng trên nhiều miền hoặc nhiều đường dẫn. Lọ cookie cũng có thể được chuyển vào yêu cầu

>>> 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

Chuyển hướng và Lịch sử

Theo mặc định, Yêu cầu sẽ thực hiện chuyển hướng vị trí cho tất cả các động từ ngoại trừ HEAD

Chúng ta có thể sử dụng thuộc tính

>>> r = requests.get('https://api.github.com/events')
03 của đối tượng Response để theo dõi chuyển hướng

Danh sách chứa các đối tượng đã được tạo để hoàn thành yêu cầu. Danh sách được sắp xếp từ câu trả lời cũ nhất đến câu trả lời gần đây nhất

Ví dụ: GitHub chuyển hướng tất cả các yêu cầu HTTP sang 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

Nếu bạn đang sử dụng GET, OPTIONS, POST, PUT, PATCH hoặc DELETE, bạn có thể tắt xử lý chuyển hướng bằng tham số

>>> 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

Nếu bạn đang sử dụng HEAD, bạn cũng có thể bật chuyển hướng

>>> 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

Hết giờ

Bạn có thể yêu cầu Yêu cầu dừng chờ phản hồi sau một số giây nhất định với tham số

>>> r = requests.get('https://api.github.com/events')
07. Gần như tất cả mã sản xuất nên sử dụng tham số này trong hầu hết các yêu cầu. Không làm như vậy có thể khiến chương trình của bạn bị treo vô thời hạn

>>> 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

Ghi chú

>>> r = requests.get('https://api.github.com/events')
07 không giới hạn thời gian tải xuống toàn bộ phản hồi; . Nếu không có thời gian chờ nào được chỉ định rõ ràng, các yêu cầu sẽ không hết thời gian chờ

Lỗi và ngoại lệ

Trong trường hợp có sự cố mạng (e. g. Lỗi DNS, kết nối bị từ chối, v.v.), Yêu cầu sẽ đưa ra một ngoại lệ

sẽ tăng nếu yêu cầu HTTP trả về mã trạng thái không thành công

Nếu một yêu cầu hết thời gian, một ngoại lệ được đưa ra

Nếu một yêu cầu vượt quá số lần chuyển hướng tối đa đã định cấu hình, một ngoại lệ sẽ được đưa ra

Tất cả các ngoại lệ mà Yêu cầu tăng rõ ràng đều kế thừa từ


Sẵn sàng để biết thêm?

Nếu bạn đang trên thị trường việc làm, hãy cân nhắc tham gia bài kiểm tra lập trình này. Một khoản quyên góp đáng kể sẽ được thực hiện cho dự án này, nếu bạn tìm được việc làm thông qua nền tảng này