เว็บเซิร์ฟเวอร์คืออะไร?
เมื่อแอปพลิเคชัน (ไคลเอนต์) ต้องการทรัพยากรบางอย่าง ก็สามารถร้องขอทรัพยากรผ่าน HTTP ไปยังเซิร์ฟเวอร์ได้ เซิร์ฟเวอร์ที่ให้ทรัพยากรนั้นเป็นเว็บเซิร์ฟเวอร์
1.1 ประสบการณ์ครั้งแรกกับเซิร์ฟเวอร์
1.2 สองวิธีในการสร้างเซิร์ฟเวอร์
1.3 วัตถุคำขอ
วัตถุคำขอสรุปข้อมูลทั้งหมดที่ส่งผ่านโดยไคลเอนต์ไปยังเซิร์ฟเวอร์ของเรา
URL ของคำขอนี้ เซิร์ฟเวอร์จำเป็นต้องดำเนินการประมวลผลที่แตกต่างกันตาม URL ที่แตกต่างกัน
วิธีการร้องขอของคำขอนี้ เช่น GET, POST คำขอขาเข้า พารามิเตอร์และวิธีการประมวลผลแตกต่างกัน ส่วน
หัวของคำขอนี้ยังมีข้อมูลบางอย่าง เช่น ข้อมูลไคลเอ็นต์ รูปแบบการรับข้อมูล รูปแบบการเข้ารหัสที่รองรับ ฯลฯ...
คำขอปกติ:
เมื่อส่งคำขอ ลูกค้าจะขอข้อมูลที่แตกต่างกัน จากนั้นที่อยู่คำขอที่แตกต่างกันจะถูกส่งเข้าไป เซิร์ฟเวอร์จำเป็นต้องทำการตอบกลับที่แตกต่างกันตามที่อยู่คำขอที่แตกต่างกัน
หากที่อยู่คำขอของผู้ใช้มีพารามิเตอร์เพิ่มเติมด้วย เราควรแยกวิเคราะห์อย่างไร
เราสามารถใช้โมดูล url
ในหมู่พวกเขา โมดูล url มีเครื่องมืออรรถประโยชน์สำหรับการประมวลผล URL และการแยกวิเคราะห์
นำเข้า url const url = need('url')
สมมติว่าข้อมูลคำขอของเราคือ:
ผลลัพธ์ของคอนโซลแยกวิเคราะห์ URL คือ:
ในบรรดาชื่อพาธคือเส้นทางสุดท้ายที่เราต้องได้รับ จุดประสงค์ของเราคือการได้รับชื่อผู้ใช้และรหัสผ่านแยกกันในการสืบค้น
นำเข้าโมดูลสตริงการสืบค้น const qs = require('querystring');
const http = need("http")const url = need('url')const qs = need('querystring')// 1. สร้างเซิร์ฟเวอร์ const server = http .createServer((req, res) => { // ใช้โมดูลในตัว const{ pathname,query } = url.parse(req.url) ถ้า (ชื่อพาธ === '/เข้าสู่ระบบ'){ console.log(สอบถาม); console.log(qs.parse(แบบสอบถาม)); const { ชื่อผู้ใช้ รหัสผ่าน } = qs.parse (แบบสอบถาม) console.log(ชื่อผู้ใช้,รหัสผ่าน); res.end('คำขอสิ้นสุด') }});// 2. ตั้งค่าหมายเลขพอร์ตและเริ่มต้นเซิร์ฟเวอร์ server.listen(8888,'0.0.0.0',()=>{ console.log("เซิร์ฟเวอร์เริ่มทำงานสำเร็จ~");})
ในข้อกำหนด Restful (รูปแบบการออกแบบ) เราควรใช้วิธีการร้องขอที่แตกต่างกันในการเพิ่ม ลบ แก้ไข และตรวจสอบข้อมูล:
เราสามารถดำเนินการประมวลผลที่แตกต่างกันโดยการตัดสินวิธีการร้องขอที่แตกต่างกัน
สมมติว่าต่อไปนี้เป็นข้อมูลคำขอ JSON ของเราในร่างกาย -> จะทำให้เซิร์ฟเวอร์ของเราได้รับชื่อผู้ใช้และรหัสผ่านได้อย่างไร
คือ
ประเภทของข้อมูลที่ใช้ในคำขอนี้:
-length: **ขนาดและความยาวของไฟล์
ที่คงอยู่:
**การเข้ารหัสที่ยอมรับ: ** แจ้งเซิร์ฟเวอร์ ไคลเอนต์ รูปแบบการบีบอัดไฟล์ที่ไคลเอนต์รองรับ เช่น ไฟล์ js สามารถใช้การเข้ารหัส gzip ซึ่งสอดคล้องกับไฟล์ .gz
**ยอมรับ:** แจ้งเซิร์ฟเวอร์ว่าไคลเอนต์สามารถรับประเภทรูปแบบไฟล์ได้
* *user-agent:** ข้อมูลที่เกี่ยวข้องกับไคลเอ็นต์ ;
1.4 วัตถุตอบสนอง
หากเราต้องการตอบกลับลูกค้าด้วยข้อมูลผลลัพธ์ เราสามารถทำได้สองวิธี:
หมายเหตุ: หากเราไม่เรียกสิ้นสุดและปิดไคลเอ็นต์จะรอผลลัพธ์
รหัสสถานะ Http (รหัสสถานะ Http) เป็นรหัสตัวเลขที่ใช้เพื่อแสดงสถานะการตอบสนอง Http:
หมวดหมู่ | เหตุผล วลี | |
---|---|---|
1xx | ข้อมูล | กำลังประมวลผลคำขอที่ยอมรับ |
2xx | สำเร็จ | คำขอได้รับการประมวลผลตามปกติ |
3xx | การเปลี่ยนเส้นทาง | จำเป็นต้องมีการดำเนินการเพิ่มเติมเพื่อดำเนินการตามคำขอให้เสร็จสมบูรณ์ |
4xx | ข้อผิดพลาดไคลเอ็นต์ | ข้อผิดพลาดไคลเอ็นต์ ข้อผิดพลาดคำขอ เซิร์ฟเวอร์ไม่สามารถประมวลผลคำขอ |
5xx | ข้อผิดพลาดเซิร์ฟเวอร์ (ข้อผิดพลาดของเซิร์ฟเวอร์) | เซิร์ฟเวอร์ ข้อผิดพลาดในการประมวลผลคำขอ |
รหัสตอบกลับทั่วไป:
คำอธิบาย | รหัสสถานะ | คำอธิบาย | สถานะ
---|---|---|
200 | ตกลง | คำขอสำเร็จ โดยทั่วไปใช้สำหรับคำขอ GET และ POST |
400 | คำขอไม่ถูก | ต้องเป็นข้อผิดพลาด |
ทาง | ไวยากรณ์ | ใน |
คำขอ | ของ | ไคลเอ็นต์ . |
404 | ไม่พบ | เซิร์ฟเวอร์ไม่สามารถประมวลผลคำขอตามคำขอของลูกค้าได้ ด้วยรหัสนี้ นักออกแบบเว็บไซต์สามารถตั้งค่าเพจส่วนตัวของ "ไม่พบทรัพยากรที่คุณร้องขอ" |
เซิร์ฟเวอร์ | มีข้อผิดพลาดภายใน | และไม่สามารถดำเนินการตามคำขอ |
ได้ | เนื่องจาก | การโอเวอร์โหลดหรือการบำรุงรักษาระบบ เซิร์ฟเวอร์ไม่สามารถประมวลผลคำขอของลูกค้าได้ชั่วคราว ความยาวของความล่าช้าสามารถรวมอยู่ในรหัสสถานะที่ตั้งไว้ในส่วนหัว Retry-After ของเซิร์ฟเวอร์ |
:
ส่งคืนข้อมูลส่วนหัว มีสองวิธีหลัก: