Kodokon kodokon.com

HTTP แบบเห็น ๆ: เมธอดและรหัสสถานะ

อ่านคำขอจริงและการตอบกลับจริง แล้วเรียนรู้ว่า 200, 404 และ 500 หมายความว่าอะไรกันแน่

8 นาที · 3 คำถาม

เปิดบทเรียนนี้ใน Kodokon

HTTP (HyperText Transfer Protocol) คือภาษาที่เบราว์เซอร์กับเซิร์ฟเวอร์ใช้พูดคุยกัน ข่าวดีคือมันไม่ใช่ไบนารีที่อ่านไม่รู้เรื่อง แต่เป็น ข้อความที่อ่านออก คำขอหนึ่งจบได้ในไม่กี่บรรทัด: คำกริยาหนึ่งคำ ที่อยู่หนึ่งที่ แล้วตามด้วย เฮดเดอร์ ที่เติมบริบทให้ครบ (ฉันชอบภาษาอะไร ฉันใช้เบราว์เซอร์ตัวไหน) การตอบกลับก็มีรูปแบบเดียวกัน: รหัสตัวเลข เฮดเดอร์ บรรทัดว่างหนึ่งบรรทัด แล้วจึงเป็นเนื้อหา

BASH
curl -i https://example.com

HTTP/2 200
content-type: text/html; charset=UTF-8
content-length: 1256
cache-control: max-age=86400

<!doctype html>
<html>
...
ตัวเลือก -i บอกให้ curl พิมพ์เฮดเดอร์ของการตอบกลับออกมาด้วย ไม่ใช่แค่เนื้อหาอย่างเดียว

คำกริยาที่อยู่ตอนต้นของคำขอเรียกว่า เมธอด และมันประกาศความตั้งใจของคุณ GET แค่ขออ่านทรัพยากรหนึ่ง: นี่คือสิ่งที่เบราว์เซอร์ทำทุกครั้งที่คุณเปิดหน้าเว็บ POST ส่งข้อมูลไปให้เซิร์ฟเวอร์ โดยทั่วไปคือตอนที่คุณกดส่งฟอร์มสมัครสมาชิก PUT อัปเดตรายการที่มีอยู่แล้ว และ DELETE ขอให้ลบมันทิ้ง ให้โฟกัสที่สองตัวแรกไว้ก่อน: มันคิดเป็นสัดส่วนท่วมท้นของการรับส่งข้อมูลทั้งหมด

BASH
curl -X POST -d "name=Sarah&age=30" https://httpbin.org/post
คำขอแบบ POST: -d ป้อนข้อมูลที่จะส่งไป เหมือนกับที่ฟอร์มทำ

ทุกการตอบกลับเริ่มต้นด้วย รหัสสถานะ สามหลัก แค่หลักแรกหลักเดียวก็บอกสถานการณ์ให้คุณรู้แล้ว รหัสในกลุ่ม 2xx หมายถึงสำเร็จ: 200 แปลว่า "นี่ไง สิ่งที่คุณขอมา" รหัส 3xx คือการเปลี่ยนเส้นทาง: 301 แปลว่า "หน้านี้ย้ายไปแล้ว ไปที่นั่นแทนนะ" รหัส 4xx ชี้ไปที่ความผิดพลาดฝั่ง ไคลเอนต์: 404 (หาทรัพยากรไม่เจอ), 403 (ห้ามเข้าถึง), 401 (คุณต้องลงชื่อเข้าใช้ก่อน) ส่วนรหัส 5xx ชี้ไปที่ความล้มเหลวฝั่ง เซิร์ฟเวอร์: 500 คือข้อผิดพลาดภายในแบบคลาสสิก

BASH
curl -I https://example.com/this-page-does-not-exist

HTTP/2 404
content-type: text/html; charset=UTF-8
ตัวเลือก -I (ไอตัวใหญ่) ขอเฉพาะเฮดเดอร์เท่านั้น: เหมาะสุด ๆ สำหรับการตรวจสอบรหัสสถานะ

ทดสอบความรู้

ตรวจสอบว่าคุณจำประเด็นสำคัญของบทเรียนนี้ได้ครบถ้วน

  1. รหัสสถานะ 404 หมายความว่าอะไร?
    • เซิร์ฟเวอร์พังไปแล้ว
    • หาทรัพยากรที่ขอไม่เจอที่อยู่นั้น
    • คำขอสำเร็จแล้ว
  2. รหัสตระกูลไหนบ่งบอกถึงปัญหาฝั่งเซิร์ฟเวอร์?
    • ตระกูล 2xx
    • ตระกูล 3xx
    • ตระกูล 4xx
    • ตระกูล 5xx
  3. เบราว์เซอร์ใช้เมธอด HTTP ตัวไหนเพื่อแค่อ่านหน้าเว็บ?
    • GET
    • POST
    • DELETE