Trong bài viết này, tôi sẽ cho bạn biết cách đăng JSON từ máy khách lên máy chủ bằng thư viện
import json
sampleDict = {
"id": 1,
"name":"Jessa"
}
jsonData = json.dumps[sampleDict]
2. Ngoài ra, nếu bạn đang gặp phải “lỗi 400 yêu cầu không hợp lệ” trong khi đăng JSON lên máy chủ, bài viết này sẽ cố gắng giải quyết vấn đề đóĐọc thêm
- Giải Bài tập JSON của Python để thực hành các kỹ năng JSON của Python
Các bước để xây dựng một yêu cầu POST JSON
Tạo một đối tượng URL. Hãy tạo một đối tượng URL. Chúng tôi cần một chuỗi URI đích chấp nhận dữ liệu JSON thông qua phương thức HTTP POST. Trong ví dụ này, tôi đang sử dụng httpbin. dịch vụ org để đăng dữ liệu JSON. httpbin. org là một dịch vụ web cho phép chúng tôi kiểm tra yêu cầu HTTP. Bạn có thể sử dụng nó để kiểm tra và kiểm tra yêu cầu POST của mình. httpbin. org phản hồi với dữ liệu về yêu cầu của bạn
Vì vậy, URL của tôi là. “https. //httpbin. tổ chức/bài đăng“
Đặt phương thức yêu cầu. Như tên gợi ý, chúng ta cần sử dụng một phương thức post của một request module
requests.post['//httpbin.org/post']
Chỉ định dữ liệu POST. Theo đặc tả HTTP cho yêu cầu POST, chúng tôi chuyển dữ liệu qua nội dung thư. Khi sử dụng các yêu cầu, bạn sẽ chuyển tải trọng tới tham số dữ liệu của chức năng tương ứng. Dữ liệu có thể là bất kỳ thứ gì bao gồm JSON, từ điển, danh sách các bộ dữ liệu, byte hoặc đối tượng giống như tệp. Trong ví dụ này, tôi đang gửi dữ liệu JSON sau
{'id': 1, 'name': 'Jessa Duggar'}
Nếu bạn có dữ liệu ở dạng từ điển hoặc bất kỳ đối tượng Python nào, bạn có thể chuyển đổi nó thành JSON như thế này
import json
sampleDict = {
"id": 1,
"name":"Jessa"
}
jsonData = json.dumps[sampleDict]
Sử dụng tham số
import json
sampleDict = {
"id": 1,
"name":"Jessa"
}
jsonData = json.dumps[sampleDict]
3. Mô-đun yêu cầu cung cấp tham số import json
sampleDict = {
"id": 1,
"name":"Jessa"
}
jsonData = json.dumps[sampleDict]
3 mà chúng ta có thể sử dụng để chỉ định dữ liệu JSON trong phương thức POST. tôi. e. , Để gửi dữ liệu JSON, chúng ta cũng có thể sử dụng tham số import json
sampleDict = {
"id": 1,
"name":"Jessa"
}
jsonData = json.dumps[sampleDict]
3 của phương thức {'id': 1, 'name': 'Jessa Duggar'}2
Ví dụ
requests.post['//httpbin.org/post', json={'id': 1, 'name': 'Jessa'}]
Tại sao đặt nó thành json? . Bây giờ, hãy xem ví dụ
Cách tiếp cận 1. Sử dụng tham số import json
sampleDict = {
"id": 1,
"name":"Jessa"
}
jsonData = json.dumps[sampleDict]
3
import json
sampleDict = {
"id": 1,
"name":"Jessa"
}
jsonData = json.dumps[sampleDict]
import requests
response = requests.post['//httpbin.org/post', json={'id': 1, 'name': 'Jessa'}]
print["Status code: ", response.status_code]
print["Printing Entire Post Request"]
print[response.json[]]
đầu ra
Status code: 200 Printing Entire Post Request {'args': {}, 'data': '{"id": 1, "name": "Jessa"}', 'files': {}, 'form': {}, 'headers': {'Accept': '*/*', 'Accept-Encoding': 'gzip, deflate', 'Content-Length': '26', 'Content-Type': 'application/json', 'Host': 'httpbin.org', 'User-Agent': 'python-requests/2.21.0'}, ' json': {'id': 1, 'name': 'Jessa'}, 'origin': 'xxx.xx.xx.xx, xxx.xx.xx.xx', 'url': '//httpbin.org/post'}
Ghi chú. Dịch vụ này trả về toàn bộ yêu cầu của bạn dưới dạng phản hồi để giúp bạn biết chi tiết về yêu cầu của mình
Cách tiếp cận 2. Bằng cách đặt thông tin tiêu đề
Ngoài ra, chúng tôi có thể đặt loại nội dung của yêu cầu. Trong ví dụ này, chúng tôi đang chuyển JSON, vì vậy loại nội dung của yêu cầu là
{'id': 1, 'name': 'Jessa Duggar'}4
Bằng cách chỉ định các tiêu đề yêu cầu chính xác để mô-đun yêu cầu có thể tuần tự hóa dữ liệu của bạn thành định dạng tiêu đề Kiểu nội dung chính xác. Trong cái này có thể chúng ta không cần sử dụng tham số
import json
sampleDict = {
"id": 1,
"name":"Jessa"
}
jsonData = json.dumps[sampleDict]
3. Điều này hữu ích cho một phiên bản cũ hơn. Bây giờ hãy xem ví dụđầu ra
Status code: 200 Printing Post JSON data id=1&name=Jessa application/json
Kiểm tra yêu cầu POST JSON của bạn bằng cách sử dụng người đưa thư trước khi thực hiện
Phương pháp hay nhất luôn là kiểm tra yêu cầu của bạn cùng với nội dung thư của nó bằng cách sử dụng người đưa thư để xác minh dữ liệu JSON và yêu cầu ở định dạng bắt buộc. Hãy xem cách kiểm tra yêu cầu POST bằng người đưa thư
Trong bài viết này, chúng ta sẽ tìm hiểu cách phân tích cú pháp phản hồi JSON bằng thư viện yêu cầu. Ví dụ: chúng tôi đang sử dụng thư viện
import json
sampleDict = {
"id": 1,
"name":"Jessa"
}
jsonData = json.dumps[sampleDict]
2 để gửi lệnh gọi RESTful GET tới máy chủ và đổi lại, chúng tôi nhận được phản hồi ở định dạng JSON, hãy xem cách phân tích cú pháp dữ liệu JSON này bằng PythonChúng tôi sẽ phân tích phản hồi JSON thành Từ điển Python để bạn có thể truy cập dữ liệu JSON bằng các cặp khóa-giá trị. Ngoài ra, bạn có thể prettyPrint JSON ở định dạng có thể đọc được
Đọc thêm
- Giải Bài tập JSON của Python để thực hành các kỹ năng JSON của Python
Phản hồi của yêu cầu GET chứa thông tin mà chúng tôi gọi là tải trọng. Chúng tôi có thể tìm thấy thông tin này trong nội dung thư. Sử dụng các thuộc tính và phương thức của
import json
sampleDict = {
"id": 1,
"name":"Jessa"
}
jsonData = json.dumps[sampleDict]
9 để xem tải trọng ở các định dạng khác nhauChúng tôi có thể truy cập dữ liệu tải trọng bằng ba phương thức sau của mô-đun yêu cầu
{'id': 1, 'name': 'Jessa Duggar'}
00 được sử dụng để truy cập dữ liệu tải trọng ở định dạng byte thô{'id': 1, 'name': 'Jessa Duggar'}
01. được sử dụng để truy cập dữ liệu tải trọng ở định dạng Chuỗi{'id': 1, 'name': 'Jessa Duggar'}
02 được sử dụng để truy cập dữ liệu tải trọng ở định dạng được tuần tự hóa JSON
Nội dung phản hồi JSON
Mô-đun yêu cầu cung cấp bộ giải mã JSON dựng sẵn, chúng ta có thể sử dụng nó khi xử lý dữ liệu JSON. Chỉ cần thực thi
{'id': 1, 'name': 'Jessa Duggar'}02, thế là xong.
{'id': 1, 'name': 'Jessa Duggar'}02 trả về phản hồi JSON ở định dạng từ điển Python để chúng tôi có thể truy cập JSON bằng các cặp khóa-giá trị
Bạn có thể gặp lỗi 204 trong trường hợp giải mã JSON không thành công.
{'id': 1, 'name': 'Jessa Duggar'}02 đưa ra một ngoại lệ trong trường hợp sau
- Phản hồi không chứa bất kỳ dữ liệu nào
- Phản hồi chứa JSON không hợp lệ
Bạn phải kiểm tra
{'id': 1, 'name': 'Jessa Duggar'}06 hoặc
{'id': 1, 'name': 'Jessa Duggar'}07 trước khi phân tích cú pháp JSON vì lệnh gọi thành công tới
{'id': 1, 'name': 'Jessa Duggar'}02 không biểu thị sự thành công của yêu cầu
Trong trường hợp xảy ra lỗi HTTP 500, một số máy chủ có thể trả về đố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]. Vì vậy, bạn nên thực hiện ________ 102 sau khi kiểm tra ________ 106 hoặc kiểm tra ______ 107
Hãy xem ví dụ về cách sử dụng phản hồi. json[] và phân tích nội dung JSON
Trong ví dụ này, tôi đang sử dụng httpbin. org để thực hiện lệnh gọi GET. httpbin. org là một dịch vụ web cho phép kiểm tra các yêu cầu và phản hồi bằng dữ liệu về yêu cầu đó. Bạn có thể sử dụng dịch vụ này để kiểm tra mã của mình