เนื้อหานี้เป็นส่วนหนึ่งของชุด "ข้อมูลเบื้องต้นเกี่ยวกับการพัฒนาองค์กร" บทความก่อนหน้านี้:
เป็นที่น่าสังเกตทันทีว่าโปรโตคอล HTTP ประกอบด้วยข้อความเท่านั้น เราสนใจโครงสร้างที่มีข้อความนี้มากที่สุด แต่ละข้อความประกอบด้วยสามส่วน:
- เกี่ยวกับเครือข่าย
- เกี่ยวกับสถาปัตยกรรมซอฟต์แวร์
โปรโตคอลการถ่ายโอนข้อมูลคืออะไร
นี่คือชื่อที่ตั้งให้กับข้อตกลงที่ยอมรับโดยทั่วไป ซึ่งผู้พัฒนาบริการต่างๆ ส่งข้อมูลในรูปแบบเดียว ตัวอย่างเช่น เมื่อใช้ Google Chrome คุณสามารถรับข้อมูลจากทั้ง Facebook และ Twitter ได้ เนื่องจากนักพัฒนาส่งข้อมูลโดยใช้โปรโตคอล HTTP มาตรฐาน และเบราว์เซอร์ของคุณสามารถประมวลผลได้ กฎแบบเดียวกันยังสะดวกมากสำหรับนักพัฒนาฝั่งเซิร์ฟเวอร์ด้วย: มีไลบรารีจำนวนมากที่สามารถแปลงข้อมูลให้คุณและส่งโดยใช้โปรโตคอลที่จำเป็น เดิมที HTTP ถือเป็นโปรโตคอลสำหรับการถ่ายโอนหน้า HTML นี่เป็นกรณีนี้มานานแล้ว แต่ตอนนี้โปรแกรมเมอร์มักจะถ่ายโอนทั้งสตริงและไฟล์มีเดียไปทับมัน โดยรวมแล้ว โปรโตคอลนี้มีความหลากหลายและยืดหยุ่น และใช้งานง่ายมาก ตอนนี้เรามาดูวิธีการทำเช่นนี้กันดีกว่า
โครงสร้าง HTTP
เป็นที่น่าสังเกตทันทีว่าโปรโตคอล HTTP ประกอบด้วยข้อความเท่านั้น เราสนใจโครงสร้างที่มีข้อความนี้มากที่สุด แต่ละข้อความประกอบด้วยสามส่วน:
- เส้นเริ่มต้น—กำหนดข้อมูลการบริการ
- ส่วนหัว - คำอธิบายพารามิเตอร์ข้อความ
- เนื้อหาข้อความ (Body) - ข้อมูลข้อความ ต้องแยกออกจากส่วนหัวด้วยบรรทัดว่าง
คำขอ HTTP แบบธรรมดามีลักษณะอย่างไร
GET / HTTP/1.1
Host: javarush.com
User-Agent: firefox/5.0 (Linux; Debian 5.0.8; en-US; rv:1.8.1.7)
บรรทัดเริ่มต้นประกอบด้วย:
- GET - วิธีการร้องขอ;
- / — เส้นทางคำขอ (เส้นทาง);
- HTTP/1.1 - เวอร์ชันของโปรโตคอลการถ่ายโอนข้อมูล
- โฮสต์ - โฮสต์ที่ส่งคำขอ
- User-Agentคือไคลเอนต์ที่ส่งคำขอ
POST /user/create/json HTTP/1.1
Accept: application/json
Content-Type: application/json
Content-Length: 28
Host: javarush.com
{
"Id": 12345,
"User": "John"
}
คำขอถูกส่งไปยัง javarush.com/user/create/json เวอร์ชันโปรโตคอลคือ HTTP/1.1 Accept ระบุรูปแบบการตอบกลับที่ไคลเอ็นต์คาดหวังที่จะได้รับ Content-Type ระบุรูปแบบเนื้อหาข้อความที่จะถูกส่ง Content-Length - จำนวนอักขระในร่างกาย คำขอ HTTP สามารถมีส่วนหัวที่แตกต่างกันได้มากมาย รายละเอียดเพิ่มเติมสามารถพบได้ใน ข้อกำหนดโปรโตคอล
การตอบสนอง HTTP
หลังจากได้รับคำขอแล้ว เซิร์ฟเวอร์จะประมวลผลและส่งการตอบกลับไปยังไคลเอ็นต์:HTTP/1.1 200 OK
Content-Type: text/html; charset=UTF-8
Content-Length: 98
<html>
<head>
<title>An Example Page</title>
</head>
<body>
<p>Hello World</p>
</body>
</html>
บรรทัดเริ่มต้นในการตอบกลับประกอบด้วยเวอร์ชันโปรโตคอล (HTTP/1.1), รหัสสถานะ (200), คำอธิบายสถานะ (ตกลง) ส่วนหัวระบุประเภทและความยาวของเนื้อหา เนื้อความของการตอบกลับประกอบด้วยโค้ด HTML ที่เบราว์เซอร์จะดึงลงในหน้า HTML
รหัสสถานะการตอบสนอง
ทุกอย่างชัดเจนทั้งเนื้อหาและส่วนหัวของข้อความ แต่ก็คุ้มค่าที่จะพูดสักสองสามคำเกี่ยวกับรหัสสถานะ รหัสสถานะการตอบสนองจะเป็นตัวเลขสามหลักเสมอ และหลักแรกของรหัสจะระบุหมวดหมู่ของการตอบกลับ:- 1xx - ข้อมูล ได้รับคำขอแล้ว เซิร์ฟเวอร์พร้อมที่จะดำเนินการต่อ
- 2xx - สำเร็จ ได้รับ เข้าใจ และดำเนินการตามคำขอแล้ว
- 3xx - การเปลี่ยนเส้นทาง ต้องดำเนินการขั้นตอนต่อไปนี้เพื่อประมวลผลคำขอ
- 4xx - ข้อผิดพลาดของไคลเอ็นต์ คำขอมีข้อผิดพลาดหรือไม่ปฏิบัติตามโปรโตคอล
- 5xx - ข้อผิดพลาดของเซิร์ฟเวอร์ เซิร์ฟเวอร์ไม่สามารถประมวลผลคำขอได้ แม้ว่าจะประกอบอย่างถูกต้องก็ตาม
- 200 ตกลง — ได้รับคำขอและดำเนินการเรียบร้อยแล้ว
- 201 สร้างแล้ว — ได้รับคำขอและประมวลผลสำเร็จ ส่งผลให้เกิดการสร้างทรัพยากรใหม่หรืออินสแตนซ์
- 301 ย้ายอย่างถาวร - ทรัพยากรที่ร้องขอถูกย้ายอย่างถาวร และการร้องขอในภายหลังจะต้องเกิดขึ้นตามที่อยู่ใหม่
- 307 การเปลี่ยนเส้นทางชั่วคราว - ทรัพยากรถูกย้ายชั่วคราว ในตอนนี้ คุณสามารถเข้าถึงได้โดยใช้การเปลี่ยนเส้นทางอัตโนมัติ
- 403 ห้าม - คำขอชัดเจน แต่ต้องได้รับอนุญาต
- 404 ไม่พบ - เซิร์ฟเวอร์ไม่พบทรัพยากรตามที่อยู่นี้
- 501 ไม่ได้ใช้งาน - เซิร์ฟเวอร์ไม่รองรับฟังก์ชันการทำงานเพื่อตอบสนองคำขอนี้
- ไม่รองรับเวอร์ชัน HTTP 505 - เซิร์ฟเวอร์ไม่รองรับโปรโตคอล HTTP เวอร์ชันที่ระบุ
GO TO FULL VERSION