Gửi dữ liệu JSON trong yêu cầu POST Python

Bài đăng này tập trung vào yêu cầu đăng bài python với tệp json. Hướng dẫn này sẽ cung cấp cho bạn ví dụ đơn giản về yêu cầu python với phần thân json. Bài viết này đi chi tiết về yêu cầu đăng bài python với tệp json. đó là ví dụ đơn giản về tệp json yêu cầu python

Ở đây, chúng tôi sẽ sử dụng thư viện yêu cầu cho tất cả Yêu cầu POST HTTP với tệp json làm tham số và nhận phản hồi JSON trong chương trình python. Trong ví dụ này tôi sẽ tạo tham số. json và lấy các tham số json từ tệp đó. Tôi sẽ cho bạn một ví dụ rất đơn giản để gọi POST Request với các tham số body trong python

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

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

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

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

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

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

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 được giải mã tự động cho bạn

Mã hóa chuyển đổi

>>> print(r.url)
https://httpbin.org/get?key2=value2&key1=value1
5 được giải mã tự động 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.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')
60

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

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 chỉ ra 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
>>> 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')
00 hoặc kiểm tra
>>> 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')
01 là những gì bạn mong đợi

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

>>> 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')
02. Nếu bạn muốn làm điều này, hãy đảm bảo rằng bạn đã đặt
>>> 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')
03 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.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')
62

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

Sử dụ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')
04 sẽ xử lý rất nhiều thứ mà bạn sẽ phải xử lý khi sử dụng trực tiếp
>>> 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')
05. 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
>>> 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')
06 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

>>> 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')
04 so với
>>> 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')
05.
>>> 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')
04 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.
>>> 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')
05 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
>>> 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')
05

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ố

>>> 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')
14 vào tham số
>>> 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')
15

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

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 đăng nhập được chỉ định trong

    >>> 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')
    
    16, do đó sẽ bị ghi đè bởi tham số
    >>> 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')
    
    17. 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

>>> 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')
18, bytestring 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ố

>>> 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')
19. 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.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')
65

Đối số

>>> 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')
19 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
>>> 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')
19 hoặc là 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à 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.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')
66

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

>>> 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')
18 thay vì
>>> 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')
14, 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.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')
67

Xin lưu ý rằng đoạn mã trên sẽ KHÔNG thêm tiê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')
44 (vì vậy cụ thể là nó sẽ KHÔNG đặt nó thành
>>> 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')
45)

Nếu bạn cần bộ tiêu đề đó và bạn không muốn tự mã hó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')
14, bạn cũng có thể chuyển trực tiếp nó bằng tham số
>>> 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')
47 (được thêm vào trong phiên bản 2. 4. 2) và nó sẽ được mã hóa tự độ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')
68

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

Lưu ý, tham số

>>> 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')
47 bị bỏ qua nế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')
19 hoặc
>>> 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')
20 được thông qua

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 = 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')
21, bạn có thể muốn phát trực tuyến yêu cầu. Theo mặc định,
>>> 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')
22 không hỗ trợ điều này, nhưng có một gói riêng hỗ trợ -
>>> 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')
23. 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 = 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')
24 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 = 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')
26 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 = 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')
28, khi chúng tôi gọi
>>> 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')
29, 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.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')
600

>>> 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ề dưới dạng , hoạt động giống như

>>> 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')
14 nhưng cũng cung cấp giao diện hoàn thiện hơn, phù hợp để sử dụng trên nhiều miền hoặc đườ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.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')
603 của đối tượng Phản hồi để 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.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')
606

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

Làm cách nào để gửi dữ liệu JSON trong yêu cầu POST?

Hãy xem các bước ngay bây giờ. .
Chọn yêu cầu POST và nhập URL thao tác POST dịch vụ của bạn
Nhấp vào Tiêu đề. Trong cột khóa, nhập Loại nội dung và trong cột Giá trị, nhập ứng dụng/json
Nhấp vào phần cơ thể và nhấp vào nút radio thô. nhập dữ liệu JSON của bạn. Nhấp vào nút Gửi

Chúng tôi có thể gửi đối tượng JSON trong yêu cầu POST không?

API HttpRequest cho phép bạn gửi một chuỗi JSON hoặc đối tượng JSON bằng phương thức POST . Sử dụng phương thức mở, bạn có thể bắt đầu yêu cầu HTTP bằng URL. Với phương thức gửi của API HttpRequest, bạn có thể gửi trực tiếp chuỗi JSON.

Làm cách nào để chuyển dữ liệu JSON thô trong yêu cầu POST?

ĐĂNG yêu cầu . Bây giờ bạn có thể nhập JSON mà bạn muốn gửi cùng với yêu cầu POST. Nếu điều này thành công, bạn sẽ thấy dữ liệu mới trong 'db của mình. change the method next to the URL to 'POST', and under the 'Body' tab choose the 'raw' radio button and then 'JSON (application/json)' from the drop down. You can now type in the JSON you want to send along with the POST request. If this is successful, you should see the new data in your 'db.

Làm cách nào để gửi phản hồi JSON bằng Python?

Cách tiếp cận. .
Nhập mô-đun
Tạo một chức năng
Tạo từ điển
Chuyển từ điển sang đối tượng JSON bằng phương thức dumps()
Trả lại đối tượng JSON