Yêu cầu tiêu đề Python

Bây giờ, chúng ta có một đối tượng

>>> r = requests.put["//httpbin.org/put"]
>>> r = requests.delete["//httpbin.org/delete"]
>>> r = requests.head["//httpbin.org/get"]
>>> r = requests.options["//httpbin.org/get"]
1 được gọi là
>>> r = requests.put["//httpbin.org/put"]
>>> r = requests.delete["//httpbin.org/delete"]
>>> r = requests.head["//httpbin.org/get"]
>>> r = requests.options["//httpbin.org/get"]
2. Chúng tôi có thể nhận được tất cả thông tin chúng tôi cần từ đối tượng này

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["//httpbin.org/post"]

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

>>> r = requests.put["//httpbin.org/put"]
>>> r = requests.delete["//httpbin.org/delete"]
>>> r = requests.head["//httpbin.org/get"]
>>> r = requests.options["//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["//httpbin.org/put"]
>>> r = requests.delete["//httpbin.org/delete"]
>>> r = requests.head["//httpbin.org/get"]
>>> r = requests.options["//httpbin.org/get"]
3. 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, sử dụng đối số từ khóa
>>> r = requests.put["//httpbin.org/put"]
>>> r = requests.delete["//httpbin.org/delete"]
>>> r = requests.head["//httpbin.org/get"]
>>> r = requests.options["//httpbin.org/get"]
4. Ví dụ: nếu bạn muốn chuyển
>>> r = requests.put["//httpbin.org/put"]
>>> r = requests.delete["//httpbin.org/delete"]
>>> r = requests.head["//httpbin.org/get"]
>>> r = requests.options["//httpbin.org/get"]
5 và
>>> r = requests.put["//httpbin.org/put"]
>>> r = requests.delete["//httpbin.org/delete"]
>>> r = requests.head["//httpbin.org/get"]
>>> r = requests.options["//httpbin.org/get"]
6 sang
>>> r = requests.put["//httpbin.org/put"]
>>> r = requests.delete["//httpbin.org/delete"]
>>> r = requests.head["//httpbin.org/get"]
>>> r = requests.options["//httpbin.org/get"]
7, bạn sẽ sử dụng đoạn mã sau

>>> payload = {'key1': 'value1', 'key2': 'value2'}
>>> r = requests.get["//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

>>> r = requests.put["//httpbin.org/put"]
>>> r = requests.delete["//httpbin.org/delete"]
>>> r = requests.head["//httpbin.org/get"]
>>> r = requests.options["//httpbin.org/get"]
0

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

>>> r = requests.put["//httpbin.org/put"]
>>> r = requests.delete["//httpbin.org/delete"]
>>> r = requests.head["//httpbin.org/get"]
>>> r = requests.options["//httpbin.org/get"]
1

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

>>> r = requests.put["//httpbin.org/put"]
>>> r = requests.delete["//httpbin.org/delete"]
>>> r = requests.head["//httpbin.org/get"]
>>> r = requests.options["//httpbin.org/get"]
8. 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
>>> r = requests.put["//httpbin.org/put"]
>>> r = requests.delete["//httpbin.org/delete"]
>>> r = requests.head["//httpbin.org/get"]
>>> r = requests.options["//httpbin.org/get"]
9

>>> r = requests.put["//httpbin.org/put"]
>>> r = requests.delete["//httpbin.org/delete"]
>>> r = requests.head["//httpbin.org/get"]
>>> r = requests.options["//httpbin.org/get"]
4

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

>>> r = requests.put["//httpbin.org/put"]
>>> r = requests.delete["//httpbin.org/delete"]
>>> r = requests.head["//httpbin.org/get"]
>>> r = requests.options["//httpbin.org/get"]
9 bất cứ khi nào bạn gọi
>>> r = requests.put["//httpbin.org/put"]
>>> r = requests.delete["//httpbin.org/delete"]
>>> r = requests.head["//httpbin.org/get"]
>>> r = requests.options["//httpbin.org/get"]
8

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

>>> payload = {'key1': 'value1', 'key2': 'value2'}
>>> r = requests.get["//httpbin.org/get", params=payload]
2, bạn chỉ cần sử dụng tên codec làm giá trị của
>>> r = requests.put["//httpbin.org/put"]
>>> r = requests.delete["//httpbin.org/delete"]
>>> r = requests.head["//httpbin.org/get"]
>>> r = requests.options["//httpbin.org/get"]
9 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 = requests.put["//httpbin.org/put"]
>>> r = requests.delete["//httpbin.org/delete"]
>>> r = requests.head["//httpbin.org/get"]
>>> r = requests.options["//httpbin.org/get"]
9

Mã hóa chuyển khoản

>>> payload = {'key1': 'value1', 'key2': 'value2'}
>>> r = requests.get["//httpbin.org/get", params=payload]
4 và
>>> payload = {'key1': 'value1', 'key2': 'value2'}
>>> r = requests.get["//httpbin.org/get", params=payload]
5 sẽ tự động được giải mã cho bạn

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.post["//httpbin.org/post"]
2

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.post["//httpbin.org/post"]
30

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

>>> payload = {'key1': 'value1', 'key2': 'value2'}
>>> r = requests.get["//httpbin.org/get", params=payload]
6 sẽ đưa ra một ngoại lệ

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

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

>>> payload = {'key1': 'value1', 'key2': 'value2'}
>>> r = requests.get["//httpbin.org/get", params=payload]
7. 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'}
>>> r = requests.get["//httpbin.org/get", params=payload]
8 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.post["//httpbin.org/post"]
31

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 tham số

>>> payload = {'key1': 'value1', 'key2': 'value2'}
>>> r = requests.get["//httpbin.org/get", params=payload]
9 vào tham số
>>> r = requests.put["//httpbin.org/put"]
>>> r = requests.delete["//httpbin.org/delete"]
>>> r = requests.head["//httpbin.org/get"]
>>> r = requests.options["//httpbin.org/get"]
00

Ví dụ: chúng tôi đã không chỉ định loại nội dung của mình trong ví dụ trước

>>> r = requests.post["//httpbin.org/post"]
32

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 đến đối số dữ liệu. 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.post["//httpbin.org/post"]
33

Có nhiều lần bạn muốn gửi dữ liệu không được mã hóa theo mẫu. Nếu bạn vượt qua

>>> r = requests.put["//httpbin.org/put"]
>>> r = requests.delete["//httpbin.org/delete"]
>>> r = requests.head["//httpbin.org/get"]
>>> r = requests.options["//httpbin.org/get"]
01 thay vì
>>> payload = {'key1': 'value1', 'key2': 'value2'}
>>> r = requests.get["//httpbin.org/get", params=payload]
9, 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.post["//httpbin.org/post"]
34

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["//httpbin.org/post"]
35

Bạn có thể đặt tên tệp một cách rõ ràng

>>> r = requests.post["//httpbin.org/post"]
36

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["//httpbin.org/post"]
37

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["//httpbin.org/post"]
38

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["//httpbin.org/post"]
39

Nếu chúng tôi đưa ra một yêu cầu không hợp lệ [không phải 200 phản hồi], chúng tôi có thể nêu yêu cầu đó với

>>> r = requests.put["//httpbin.org/put"]
>>> r = requests.delete["//httpbin.org/delete"]
>>> r = requests.head["//httpbin.org/get"]
>>> r = requests.options["//httpbin.org/get"]
03

>>> r = requests.post["//httpbin.org/post"]
0

Nhưng, vì

>>> r = requests.put["//httpbin.org/put"]
>>> r = requests.delete["//httpbin.org/delete"]
>>> r = requests.head["//httpbin.org/get"]
>>> r = requests.options["//httpbin.org/get"]
04 của chúng tôi cho
>>> r = requests.put["//httpbin.org/put"]
>>> r = requests.delete["//httpbin.org/delete"]
>>> r = requests.head["//httpbin.org/get"]
>>> r = requests.options["//httpbin.org/get"]
2 là
>>> r = requests.put["//httpbin.org/put"]
>>> r = requests.delete["//httpbin.org/delete"]
>>> r = requests.head["//httpbin.org/get"]
>>> r = requests.options["//httpbin.org/get"]
06, khi chúng tôi gọi
>>> r = requests.put["//httpbin.org/put"]
>>> r = requests.delete["//httpbin.org/delete"]
>>> r = requests.head["//httpbin.org/get"]
>>> r = requests.options["//httpbin.org/get"]
07, chúng tôi nhận được

>>> r = requests.post["//httpbin.org/post"]
1

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["//httpbin.org/post"]
2

Từ điển là đặc biệt, mặc dù. nó chỉ được tạo cho các tiêu đề HTTP. Theo RFC 2616, 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["//httpbin.org/post"]
3

Nếu tiêu đề không tồn tại trong Phản hồi, giá trị của nó sẽ mặc định là

>>> r = requests.put["//httpbin.org/put"]
>>> r = requests.delete["//httpbin.org/delete"]
>>> r = requests.head["//httpbin.org/get"]
>>> r = requests.options["//httpbin.org/get"]
08

>>> r = requests.post["//httpbin.org/post"]
4

Bánh quy¶

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

>>> r = requests.post["//httpbin.org/post"]
5

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

>>> r = requests.put["//httpbin.org/put"]
>>> r = requests.delete["//httpbin.org/delete"]
>>> r = requests.head["//httpbin.org/get"]
>>> r = requests.options["//httpbin.org/get"]
09

>>> r = requests.post["//httpbin.org/post"]
6

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

Các yêu cầu sẽ tự động thực hiện chuyển hướng vị trí trong khi sử dụng các động từ GET và OPTIONS

GitHub chuyển hướng tất cả các yêu cầu HTTP sang HTTPS. Chúng ta có thể sử dụng phương thức

>>> r = requests.put["//httpbin.org/put"]
>>> r = requests.delete["//httpbin.org/delete"]
>>> r = requests.head["//httpbin.org/get"]
>>> r = requests.options["//httpbin.org/get"]
10 của đối tượng Response để theo dõi chuyển hướng. Hãy xem những gì Github làm

>>> r = requests.post["//httpbin.org/post"]
7

Danh sách

>>> r = requests.put["//httpbin.org/put"]
>>> r = requests.delete["//httpbin.org/delete"]
>>> r = requests.head["//httpbin.org/get"]
>>> r = requests.options["//httpbin.org/get"]
11 chứa danh sách các đối tượng
>>> r = requests.put["//httpbin.org/put"]
>>> r = requests.delete["//httpbin.org/delete"]
>>> r = requests.head["//httpbin.org/get"]
>>> r = requests.options["//httpbin.org/get"]
12 đã được tạo để hoàn thành yêu cầu. Danh sách được sắp xếp từ yêu cầu cũ nhất đến yêu cầu gần đây nhất

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

>>> r = requests.put["//httpbin.org/put"]
>>> r = requests.delete["//httpbin.org/delete"]
>>> r = requests.head["//httpbin.org/get"]
>>> r = requests.options["//httpbin.org/get"]
13

>>> r = requests.post["//httpbin.org/post"]
8

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

>>> r = requests.post["//httpbin.org/post"]
9

Hết giờ¶

Bạn có thể 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.put["//httpbin.org/put"]
>>> r = requests.delete["//httpbin.org/delete"]
>>> r = requests.head["//httpbin.org/get"]
>>> r = requests.options["//httpbin.org/get"]
14

>>> r = requests.put["//httpbin.org/put"]
>>> r = requests.delete["//httpbin.org/delete"]
>>> r = requests.head["//httpbin.org/get"]
>>> r = requests.options["//httpbin.org/get"]
0

Ghi chú

>>> r = requests.put["//httpbin.org/put"]
>>> r = requests.delete["//httpbin.org/delete"]
>>> r = requests.head["//httpbin.org/get"]
>>> r = requests.options["//httpbin.org/get"]
14 chỉ ảnh hưởng đến chính quá trình kết nối, không tải xuống nội dung phản hồi

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ẽ tăng ngoại lệ

>>> r = requests.put["//httpbin.org/put"]
>>> r = requests.delete["//httpbin.org/delete"]
>>> r = requests.head["//httpbin.org/get"]
>>> r = requests.options["//httpbin.org/get"]
16

Trong trường hợp phản hồi HTTP không hợp lệ hiếm gặp, Yêu cầu sẽ đưa ra một ngoại lệ

>>> r = requests.put["//httpbin.org/put"]
>>> r = requests.delete["//httpbin.org/delete"]
>>> r = requests.head["//httpbin.org/get"]
>>> r = requests.options["//httpbin.org/get"]
17

Nếu một yêu cầu hết thời gian chờ, một ngoại lệ

>>> r = requests.put["//httpbin.org/put"]
>>> r = requests.delete["//httpbin.org/delete"]
>>> r = requests.head["//httpbin.org/get"]
>>> r = requests.options["//httpbin.org/get"]
18 sẽ đượ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ệ

>>> r = requests.put["//httpbin.org/put"]
>>> r = requests.delete["//httpbin.org/delete"]
>>> r = requests.head["//httpbin.org/get"]
>>> r = requests.options["//httpbin.org/get"]
19 sẽ được đưa ra

Tiêu đề của một yêu cầu là gì?

Tiêu đề yêu cầu là tiêu đề HTTP có thể được sử dụng trong yêu cầu HTTP để cung cấp thông tin về ngữ cảnh yêu cầu để máy chủ có thể điều chỉnh phản hồi. For example, the Accept-* headers indicate the allowed and preferred formats of the response.

Tại sao tiêu đề được sử dụng trong Python?

Tiêu đề chứa thông tin giao thức cụ thể xuất hiện ở phần đầu của thông báo thô được gửi qua kết nối TCP . Phần nội dung của thư được phân tách khỏi các tiêu đề bằng một dòng trống.

Tiêu đề trong ví dụ yêu cầu HTTP là gì?

Tiêu đề HTTP là trường của yêu cầu hoặc phản hồi HTTP chuyển ngữ cảnh và siêu dữ liệu bổ sung về yêu cầu hoặc phản hồi. Ví dụ: thông báo yêu cầu có thể sử dụng tiêu đề để cho biết định dạng phương tiện ưa thích của nó , trong khi phản hồi có thể sử dụng tiêu đề để chỉ định định dạng phương tiện của nội dung được trả về.

Chủ Đề