คุณกำลังมองหาที่จะส่งข้อมูล JSON ไปยังเซิร์ฟเวอร์โดยใช้ Python Requests หรือไม่? ถ้าใช่ คุณมาถูกที่แล้ว! ในบล็อกโพสต์นี้ เราจะมาดูวิธีการใช้ Python Requests เพื่อ POST ข้อมูล JSON เราจะครอบคลุมทุกอย่างตั้งแต่พื้นฐานของการส่งคำขอ POST ไปจนถึงการจัดการการตอบสนองที่ได้รับจากเซิร์ฟเวอร์ และแม้แต่การจัดการข้อผิดพลาดที่อาจเกิดขึ้นระหว่างทาง ดังนั้น มาเริ่มกันเลย!
Python Requests
Python Requests คือไลบรารี Python 3.7+ ที่ช่วยลดความซับซ้อนของกระบวนการส่งคำขอ HTTP/1.1 มันมี API ที่เรียบง่ายสำหรับการโต้ตอบกับวิธีการ HTTP เช่น GET, POST, PUT, PATCH และอื่นๆ
Python Requests: วิธีการ POST HTTP
โค้ดสนิปเป็ตต่อไปนี้แสดงให้เห็นวิธีการใช้ไลบรารี requests เพื่อส่งคำขอ HTTP POST:
import requests
url = 'https://www.example.com/api'
data = {'username': 'my_username', 'password': 'my_password'}
response = requests.post(url, data=data)
print(response.status_code)
print(response.content)
ในตัวอย่างนี้ เรากำลังส่งคำขอ HTTP POST ไปยัง https://www.example.com/api พร้อมเพย์โหลด JSON ที่มีชื่อผู้ใช้และรหัสผ่าน เมธอด requests.post() ใช้เพื่อส่งคำขอ และรหัสสถานะและการตอบสนองจะถูกพิมพ์ไปยังคอนโซล
คุณสามารถติดตั้งไลบรารี requests ได้โดยใช้คำสั่งต่อไปนี้:
python -m pip install requests
ในบล็อกโพสต์นี้ เราจะเน้นไปที่วิธีการใช้ Python Requests เพื่อส่งคำขอ POST พร้อมข้อมูล JSON
JSON คืออะไร?
JSON ย่อมาจาก JavaScript Object Notation มันเป็น รูปแบบมาตรฐาน สำหรับการแสดงข้อมูลที่มีโครงสร้าง มันเป็นรูปแบบ text-based ที่ใช้ข้อความที่ มนุษย์อ่านได้ เพื่อจัดเก็บและส่งข้อมูลอ็อบเจกต์ที่ประกอบด้วยคู่แอตทริบิวต์-ค่าและอาร์เรย์ (หรือค่าที่สามารถอนุกรมได้อื่นๆ) JSON มักใช้สำหรับการส่งข้อมูลในเว็บแอปพลิเคชัน เช่น การส่งข้อมูลจากเซิร์ฟเวอร์ไปยังไคลเอนต์ หรือในทางกลับกัน
JSON สามารถแสดงข้อมูลได้หกประเภทโดยกำเนิด: สตริง, ตัวเลข, บูลีน, null, อาร์เรย์ และอ็อบเจกต์ ตัวอย่างเช่น นี่คือการแสดง JSON ของบล็อกโพสต์:
{
"id": 1001,
"title": "What is JSON?",
"author": {
"id": 1,
"name": "James Walker"
},
"tags": [
"api",
"json",
"programming"
],
"published": false,
"publishedTimestamp": null
}
ตัวอย่างนี้แสดงให้เห็นข้อมูล JSON ทุกประเภท นอกจากนี้ยังแสดงให้เห็นถึงความกระชับของข้อมูลรูปแบบ JSON ซึ่งเป็นหนึ่งในลักษณะที่ทำให้มันน่าสนใจสำหรับการใช้งานใน API
ในแง่อื่นๆ มันเป็นรูปแบบการแลกเปลี่ยนข้อมูลแบบน้ำหนักเบาที่ง่ายสำหรับมนุษย์ในการอ่านและเขียน และง่ายสำหรับเครื่องจักรในการแยกวิเคราะห์และสร้าง JSON เป็นรูปแบบข้อความที่เป็นอิสระจากภาษาอย่างสมบูรณ์ ทำให้เป็นตัวเลือกที่เหมาะสำหรับการแลกเปลี่ยนข้อมูลระหว่างภาษาโปรแกรมต่างๆ

ทำความเข้าใจวิธีการขอ POST
คำขอ POST คือประเภทของวิธีการขอ HTTP ที่ใช้ในการส่งข้อมูลไปยังเซิร์ฟเวอร์เพื่อสร้างหรืออัปเดตทรัพยากร มักใช้เมื่ออัปโหลดไฟล์หรือเมื่อส่งแบบฟอร์มเว็บที่เสร็จสมบูรณ์ วิธีการขอ POST ร้องขอให้เว็บเซิร์ฟเวอร์ยอมรับข้อมูลที่แนบมาในเนื้อหาของข้อความขอ ซึ่งส่วนใหญ่อาจเป็นการจัดเก็บ
รูปแบบมาตรฐานของ JSON สำหรับการแสดงอ็อบเจกต์และข้อมูลทำให้เป็นตัวเลือกยอดนิยมสำหรับการส่งข้อมูลในคำขอ POST ด้วยการใช้ JSON นักพัฒนาสามารถมั่นใจได้ว่าข้อมูลที่ส่งไปยังเซิร์ฟเวอร์ได้รับการจัดระเบียบอย่างดีและเข้าใจง่าย ซึ่งช่วยเพิ่มประสิทธิภาพในการสร้างและอัปเดตทรัพยากร

เมื่อเทียบกับ วิธีการขอ HTTP GET ซึ่งดึงข้อมูลจากเซิร์ฟเวอร์ วิธีการขอ POST ร้องขอให้เว็บเซิร์ฟเวอร์ยอมรับข้อมูลที่แนบมาในเนื้อหาของข้อความขอ ซึ่งส่วนใหญ่อาจเป็นการจัดเก็บ ข้อมูลจำนวนเท่าใดก็ได้ของประเภทใดก็ได้สามารถส่งไปยังเซิร์ฟเวอร์ในเนื้อหาของข้อความขอ

นี่คือตัวอย่างวิธีการใช้ไลบรารี requests เพื่อส่งคำขอ HTTP POST:
import requests
url = 'https://www.example.com/api'
data = {'username': 'my_username', 'password': 'my_password'}
response = requests.post(url, data=data)
print(response.status_code)
print(response.content)
ในตัวอย่างนี้ เรากำลังส่งคำขอ HTTP POST ไปยัง https://www.example.com/api พร้อมเพย์โหลด JSON ที่มีชื่อผู้ใช้และรหัสผ่าน เมธอด requests.post() ใช้เพื่อส่งคำขอ และรหัสสถานะและการตอบสนองจะถูกพิมพ์ไปยังคอนโซล
วิธีการใช้ Python Requests เพื่อ POST ข้อมูล JSON?
ตอนนี้เรามีความเข้าใจพื้นฐานเกี่ยวกับ Python Requests และ JSON แล้ว มาเจาะลึกวิธีการใช้ Python Requests เพื่อ POST ข้อมูล JSON นี่คือตัวอย่างวิธีการทำ:
import requests
import json
url = 'https://www.example.com/api'
data = {'username': 'my_username', 'password': 'my_password'}
headers = {'Content-type': 'application/json'}
response = requests.post(url, data=json.dumps(data), headers=headers)
print(response.status_code)
print(response.content)
ในตัวอย่างนี้ เรากำลังส่งคำขอ HTTP POST ไปยัง https://www.example.com/api พร้อมเพย์โหลด JSON ที่มีชื่อผู้ใช้และรหัสผ่าน เมธอด requests.post() ใช้เพื่อส่งคำขอ และรหัสสถานะและการตอบสนองจะถูกพิมพ์ไปยังคอนโซล โปรดทราบว่าเรากำลังใช้เมธอด json.dumps() เพื่อแปลงพจนานุกรม data เป็นสตริง JSON ก่อนที่จะส่งในเนื้อหาคำขอ
คุณสามารถติดตั้งไลบรารี requests ได้โดยใช้คำสั่งต่อไปนี้:
python -m pip install requests
การจัดการการตอบสนอง
หลังจากส่งคำขอ POST เราจะได้รับการตอบสนองจากเซิร์ฟเวอร์ เราสามารถจัดการการตอบสนองโดยใช้อ็อบเจกต์ response ที่เราสร้างขึ้นก่อนหน้านี้ นี่คือตัวอย่างวิธีการจัดการการตอบสนอง:
import requests
url = 'https://www.example.com/api'
data = {'username': 'my_username', 'password': 'my_password'}
headers = {'Content-type': 'application/json'}
response = requests.post(url, json=data, headers=headers)
if response.status_code == 200:
print('Success!')
else:
print('An error occurred.')
ในตัวอย่างนี้ เรากำลังตรวจสอบรหัสสถานะของการตอบสนองเพื่อดูว่าคำขอสำเร็จหรือไม่ หากรหัสสถานะคือ 200 เราจะพิมพ์ “Success!” มิฉะนั้น เราจะพิมพ์ “An error occurred.”
การจัดการข้อผิดพลาด
บางครั้ง สิ่งต่างๆ ก็ไม่เป็นไปตามแผน ในกรณีที่เกิดข้อผิดพลาดขณะส่งคำขอ POST เราจะต้องจัดการกับมันอย่างเหมาะสม นี่คือตัวอย่างวิธีการจัดการข้อผิดพลาด:
import requests
url = 'https://www.example.com/api'
data = {'username': 'my_username', 'password': 'my_password'}
headers = {'Content-type': 'application/json'}
try:
response = requests.post(url, json=data, headers=headers)
response.raise_for_status()
except requests.exceptions.HTTPError as err:
print(err)
ในตัวอย่างนี้ เรากำลังใช้บล็อก try/except เพื่อจับข้อผิดพลาดใดๆ ที่อาจเกิดขึ้นขณะส่งคำขอ POST หากเกิดข้อผิดพลาด เราจะพิมพ์ข้อความแสดงข้อผิดพลาด
วิธีการส่งคำขอ POST ของ Python พร้อมข้อมูล JSON ใน Apidog?
Apidog เป็นโซลูชันการทดสอบที่มีประสิทธิภาพซึ่งมอบประสบการณ์การทดสอบอินเทอร์เฟซที่แข็งแกร่งยิ่งขึ้นให้กับนักพัฒนา คุณสมบัติขั้นสูง เช่น การสร้างกรณีทดสอบแบบกำหนดเอง การสร้างรายงาน และการทดสอบโหลดช่วยให้นักพัฒนามีความยืดหยุ่นและความสามารถที่มากขึ้นภายในเวิร์กโฟลว์การทดสอบของพวกเขา เมื่อเทียบกับ Postman, Apidog โดดเด่นในฐานะโซลูชันการทดสอบที่ครอบคลุมและมีประสิทธิภาพมากขึ้น
ในการส่งคำขอ POST พร้อมข้อมูล JSON ใน Apidog ให้ทำตามขั้นตอนเหล่านี้:
ขั้นตอนที่ 1: เปิด Apidog และสร้างคำขอใหม่

ขั้นตอนที่ 2: คลิกที่แท็บ Request และเลือก POST จากเมนูแบบเลื่อนลง

ขั้นตอนที่ 3: ป้อน URL ของจุดสิ้นสุด API ที่คุณต้องการทดสอบ, in ส่วน Headers เพิ่มส่วนหัวที่จำเป็น ในส่วน Body เลือก JSON จากเมนูแบบเลื่อนลงและป้อนข้อมูล JSON ที่คุณต้องการส่งในเนื้อหาคำขอ

ขั้นตอนที่ 4: คลิกที่ปุ่ม Send เพื่อส่งคำขอและตรวจสอบการตอบสนอง

แค่นั้นแหละ! คุณได้ส่งคำขอ POST ของ Python พร้อมข้อมูล JSON ใน Apidog สำเร็จแล้ว
บทสรุป
ในบล็อกโพสต์นี้ เราได้ครอบคลุมวิธีการใช้ Python Requests เพื่อ POST ข้อมูล JSON เราได้ดูพื้นฐานของการส่งคำขอ POST การจัดการการตอบสนอง และการจัดการข้อผิดพลาด เราหวังว่าบล็อกโพสต์นี้จะเป็นประโยชน์สำหรับคุณ และตอนนี้คุณสามารถใช้ Python Requests เพื่อ POST ข้อมูล JSON ได้อย่างง่ายดาย!
คำถามที่พบบ่อย: Python Requests - การส่งข้อมูล JSON
1. อะไรคือความแตกต่างระหว่างคำขอ GET และ POST ใน Python Requests?
คำขอ GET ใช้เพื่อดึงข้อมูลจากเซิร์ฟเวอร์ ในขณะที่คำขอ POST ใช้เพื่อส่งข้อมูลไปยังเซิร์ฟเวอร์เพื่อสร้างหรืออัปเดตทรัพยากร ใน Python Requests คุณใช้ requests.get() สำหรับคำขอ GET และ requests.post() สำหรับคำขอ POST
2. ฉันจะรวมส่วนหัวเมื่อส่งคำขอ POST พร้อมข้อมูล JSON ได้อย่างไร?
ในการรวมส่วนหัวในคำขอ POST คุณสามารถใช้พารามิเตอร์ headers ในเมธอด requests.post() ตัวอย่างเช่น ในการระบุประเภทเนื้อหาเป็น JSON:
headers = {'Content-Type': 'application/json'}
response = requests.post(url, json=data, headers=headers)3. ทำไมฉันควรใช้พารามิเตอร์ json แทน data เมื่อส่งข้อมูล JSON?
เมื่อคุณใช้พารามิเตอร์ json Python Requests จะแปลงพจนานุกรม Python ของคุณเป็นสตริง JSON โดยอัตโนมัติและตั้งค่าส่วนหัว Content-Type ที่ถูกต้อง (application/json) ซึ่งช่วยลดความจำเป็นในการอนุกรมข้อมูลด้วยตนเองโดยใช้ json.dumps()
ตัวอย่างเช่น:
response = requests.post(url, json={'username': 'user1', 'password': 'password'})
4. ฉันจะจัดการรหัสสถานะที่ไม่ใช่ 200 ในการตอบสนองได้อย่างไร?
ในการจัดการข้อผิดพลาดในการตอบสนอง HTTP คุณสามารถตรวจสอบรหัสสถานะของการตอบสนองและดำเนินการที่เหมาะสม นี่คือตัวอย่าง:
response = requests.post(url, json={'username': 'user1', 'password': 'password'})
if response.status_code == 200:
print("Request was successful")
else:
print(f"Failed with status code: {response.status_code}")5. ฉันควรทำอย่างไรหากเซิร์ฟเวอร์ส่งคืนข้อผิดพลาดเมื่อส่งคำขอ?
คุณสามารถใช้บล็อก try/except เพื่อจับข้อยกเว้นที่อาจเกิดขึ้นเมื่อทำการร้องขอ ตัวอย่างเช่น:
try:
response = requests.post(url, json={'username': 'user1', 'password': 'password'})
response.raise_for_status() # Will raise an exception for 4xx/5xx responses
except requests.exceptions.RequestException as e:
print(f"Error occurred: {e}")
6. ฉันจะส่งข้อมูล JSON ในคำขอ POST ได้อย่างไรโดยไม่ต้องใช้พารามิเตอร์ json?
หากคุณไม่ต้องการใช้พารามิเตอร์ json คุณสามารถอนุกรมข้อมูลของคุณด้วยตนเองโดยใช้เมธอด json.dumps() และส่งผ่านในพารามิเตอร์ data อย่างไรก็ตาม ตรวจสอบให้แน่ใจว่าได้ตั้งค่าส่วนหัวที่ถูกต้อง:
import json
headers = {'Content-Type': 'application/json'}
data = json.dumps({'username': 'user1', 'password': 'password'})
response = requests.post(url, data=data, headers=headers)7. ฉันสามารถทดสอบคำขอ POST ด้วยข้อมูล JSON ใน Apidog ได้หรือไม่?
ได้ คุณสามารถทดสอบคำขอ POST ด้วยข้อมูล JSON ใน Apidog ได้ เพียงเลือกเมธอด POST ป้อน URL ตั้งค่าประเภทเนื้อหาเป็น JSON ในส่วนหัว และป้อนข้อมูล JSON ของคุณในเนื้อหาคำขอ Apidog ยังช่วยให้คุณ ตรวจสอบการตอบสนองและตรวจสอบความถูกต้องได้อย่างมีประสิทธิภาพ ทำให้เป็นเครื่องมือที่ยอดเยี่ยมสำหรับการทดสอบ API
8. ฉันจะแก้ไขคำขอ POST ได้อย่างไรหากไม่ได้ผลตามที่คาดไว้?
ในการแก้ไขคำขอ POST ให้ตรวจสอบสิ่งต่อไปนี้:
- รหัสสถานะ: ตรวจสอบให้แน่ใจว่าเซิร์ฟเวอร์ตอบสนองด้วยรหัสสถานะที่คาดไว้ (เช่น 200 สำหรับความสำเร็จ)
- เนื้อหาการตอบสนอง: ดูเนื้อหาการตอบสนองเพื่อรับรายละเอียดเพิ่มเติมเกี่ยวกับสิ่งที่ผิดพลาด
- ส่วนหัว: ตรวจสอบส่วนหัวคำขออีกครั้ง (โดยเฉพาะ
Content-Typeและโทเค็นการอนุญาต) - รูปแบบข้อมูล: ตรวจสอบว่าข้อมูล JSON ที่คุณกำลังส่งนั้นถูกต้อง
9. ข้อผิดพลาดทั่วไปเมื่อส่งข้อมูล JSON ด้วย Python Requests คืออะไร?
- JSON ไม่ถูกต้อง: หาก JSON ผิดรูปแบบ คุณจะได้รับข้อผิดพลาดเช่น
ValueError: Expecting value - Content-Type ไม่ถูกต้อง: ตรวจสอบให้แน่ใจว่าคุณตั้งค่า
Content-Type: application/jsonในส่วนหัวหากคุณกำลังส่งข้อมูล JSON - ข้อผิดพลาดในการเชื่อมต่อ: หาก URL หรือเซิร์ฟเวอร์ไม่สามารถเข้าถึงได้ คุณจะพบ
requests.exceptions.ConnectionError



