อ่าน 3 นาที
แร็ค (อินเทอร์เฟซเว็บเซิร์ฟเวอร์)
Rack คืออินเทอร์เฟซแบบโมดูลาร์ระหว่าง เว็บเซิร์ฟเวอร์ และ เว็บแอปพลิเคชัน ที่พัฒนาด้วย ภาษาโปรแกรม Ruby ด้วย Rack อินเทอร์เฟซการเขียนโปรแกรมแอปพลิเคชัน (API) สำหรับ เว็บเฟรมเวิร์ก...
แร็ค (อินเทอร์เฟซเว็บเซิร์ฟเวอร์)
| Rack คืออินเทอร์เฟซเว็บเซิร์ฟเวอร์ Ruby | |
|---|---|
| ผู้เขียนต้นฉบับ | ลีอาห์ นอยเคิร์ชเชน |
| นักพัฒนา | เจมส์ ทัคเกอร์, จอช พีค, โฮเซ่ วาลิม, ไมเคิล เฟลลิงเจอร์, แอรอน แพตเตอร์สัน, ซานติอาโก ปาสโตริโน, คอนสแตนติน ฮาส |
| เวอร์ชันเสถียร | |
| ระบบปฏิบัติการ | ข้ามแพลตฟอร์ม |
| พิมพ์ | มิดเดิลแวร์ |
| ใบอนุญาต | ใบอนุญาต MIT |
| เว็บไซต์ | rack.github.io |
| ที่เก็บข้อมูล |
|
Rackคืออินเทอร์เฟซแบบโมดูลาร์ระหว่างเว็บเซิร์ฟเวอร์และเว็บแอปพลิเคชันที่พัฒนาด้วยภาษาโปรแกรม Rubyด้วย Rack อินเทอร์เฟซการเขียนโปรแกรมแอปพลิเคชัน (API) สำหรับเว็บเฟรมเวิร์กและมิดเดิลแวร์จะถูกรวมเข้า ไว้ใน เมธอดเรียกใช้เดียวที่จัดการ คำขอ และการตอบสนอง HTTP
Rack ถูกใช้โดยเฟรมเวิร์กและไลบรารี เว็บ Ruby จำนวนมาก เช่นRuby on RailsและSinatraนอกจากนี้ยังมีให้ใช้งานในรูปแบบ Ruby Gem อีกด้วย แอปพลิเคชัน Ruby จำนวนมากเรียกว่า "rack-compliant" [ 2 ]
Rack ได้สร้างแรงบันดาลใจให้กับเฟรมเวิร์กที่คล้ายกันในJavaScript [ 3 ] ( jack.js), Clojure [ 4 ] Perl ( Plack ), Common Lisp (Clack) [ 5 ]และ.NET ( OWIN ) [ 6 ]
ภาพรวม
ลักษณะเฉพาะของแอปพลิเคชัน Rack คือ อ็อบเจ็กต์แอปพลิเคชันจะตอบสนองต่อเมธอด call โดยเมธอด call จะรับอ็อบเจ็กต์สภาพแวดล้อมเป็นอาร์กิวเมนต์และส่งคืนอ็อบเจ็กต์การตอบสนองของ Rack
สิ่งแวดล้อม
แหล่งที่มา: [ 7 ]
สภาพแวดล้อมที่ถูกนำมาใช้เป็นอาร์กิวเมนต์โดยเมธอดการเรียกใช้ หมายถึงวัตถุที่มี: ก) ข้อมูลเกี่ยวกับคำขอ HTTP
ซึ่งรวมถึงข้อมูลต่างๆ เช่น:
- วิธีการร้องขอ HTTP
- ข้อมูลURL (ข้อมูลที่จะนำไปยังแอปพลิเคชัน, ข้อมูลที่จะนำไปยังตำแหน่งจริงภายในแอปพลิเคชัน, สตริงคำค้นหา )
- ข้อมูลเซิร์ฟเวอร์ เช่น ชื่อเซิร์ฟเวอร์และพอร์ตเซิร์ฟเวอร์
- เมตาแวริเอเบิล HTTP ที่ได้รับจากไคลเอ็นต์
ข) ข้อมูลเฉพาะของชั้นวาง
ซึ่งรวมถึงข้อมูลต่างๆ เช่น
- เวอร์ชันของแอปพลิเคชัน Rack ที่กำลังทำงานอยู่
- รูปแบบ URL ที่ใช้ กล่าวคือ คำขอที่ได้รับเป็นแบบ http หรือ https
- ข้อมูล HTTP ดิบ
- อ็อบเจ็กต์ Ruby สำหรับรายงานข้อผิดพลาด
- ข้อมูล เช่น ว่ามีการเรียกใช้งานอ็อบเจ็กต์แอปพลิเคชันพร้อมกันจากเธรดหรือกระบวนการอื่นหรือไม่
- ข้อมูลเกี่ยวกับความคาดหวังและความสามารถของเซิร์ฟเวอร์ (ความสามารถของเซิร์ฟเวอร์ในการป้องกันการโจรกรรมการเชื่อมต่อ)
ในกรณีที่แอปพลิเคชันถูกใช้เป็นมิดเดิลแวร์ สภาพแวดล้อมสามารถมีอ็อบเจ็กต์ที่ให้ข้อมูลเซสชัน ความสามารถในการบันทึกข้อมูล ข้อมูลเกี่ยวกับขนาดของข้อมูลที่สามารถใช้สำหรับการอ่านและการเขียน เป็นต้น นอกจากนี้ เซิร์ฟเวอร์ยังสามารถจัดเก็บข้อมูลของตนเองไว้ในสภาพแวดล้อมได้อีกด้วย
การตอบสนองของแร็ค
แหล่งที่มา: [ 7 ]
อ็อบเจ็กต์เซิร์ฟเวอร์แร็คจะส่งการตอบกลับซึ่งประกอบด้วยสามส่วน ได้แก่ สถานะ ส่วนหัว และส่วนเนื้อหา
- สถานะดังกล่าวประกอบด้วยรหัสสถานะ HTTPเช่น 200, 404
- ส่วนหัวของไฟล์จะมีข้อมูลการตอบกลับสำหรับแต่ละรายการ และระบุคู่คีย์-ค่า โดยคีย์จะต้องเป็นสตริง
- ส่วนเนื้อหา (Body) ประกอบด้วยข้อมูลสุดท้ายที่เซิร์ฟเวอร์ส่งไปยังผู้ร้องขอ
Rack::Responseเป็นอินเทอร์เฟซที่สะดวกในการสร้างการตอบสนองของ Rack คลาสRack::Responseถูกกำหนดไว้ในไฟล์ lib/rack/response.rb ในการใช้งาน คลาส Responseให้สร้างอินสแตนซ์จากเลเยอร์มิดเดิลแวร์ลงมาตามลำดับ สามารถใช้เพื่อแก้ไขคุกกี้ได้
มิดเดิลแวร์ในแร็ค
แหล่งที่มา: [ 7 ]
Rack ช่วยให้การเพิ่มส่วนประกอบ มิดเดิลแวร์หลายตัวระหว่างแอปพลิเคชันและเว็บเซิร์ฟเวอร์ทำได้ง่าย สามารถใช้ส่วนประกอบมิดเดิลแวร์หลายตัวใน Rack ซึ่งจะทำการปรับเปลี่ยนคำขอ/การตอบกลับก่อนส่งต่อไปยังส่วนประกอบถัดไป นี่เรียกว่า มิดเดิลแวร์สแต็ก (middleware stack)
เซิร์ฟเวอร์ Rack เพิ่มมิดเดิลแวร์ระดับกลางหลายตัวตามค่าเริ่มต้นสำหรับฟังก์ชันการทำงาน เช่น การแสดงข้อยกเว้นพร้อมรายละเอียดทั้งหมด[ 8 ]การตรวจสอบความถูกต้องของคำขอและการตอบกลับตามข้อกำหนดของ Rack [ 9 ]เป็นต้น
ตัวอย่างการใช้งาน
ตัวอย่างแอปพลิเคชัน " Hello World " ที่ใช้งานร่วมกับ Rack ได้ โดยใช้ ไวยากรณ์ Ruby :
# helloWorld.ru # แอปพลิเคชันที่มีการกำหนดเมธอด call ไว้class HelloWorld # เมธอด call ที่จะส่งคืนรหัสสถานะ HTTP, ประเภทเนื้อหา และเนื้อหาdef call ( env ) [ 200 , { "content-type" => "text/html; charset=utf-8" }, [ "Hello World" ]] end endรันHelloWorld.newสามารถเริ่มต้นเซิร์ฟเวอร์สำหรับโค้ดข้างต้นได้โดยใช้คำสั่ง "rackup helloWorld.ru" และสามารถเข้าถึงได้ที่http://localhost:9292/พอร์ตเริ่มต้นที่แอปพลิเคชัน Rack ใช้คือ 9292
ดูเพิ่มเติม
- Python WSGI
- เพิร์ล PSGI
- จาวาสคริปต์ JSGI
- วาง Python
- พูดคุยเล็กๆ ริมทะเล
- ฟาสต์ซีจีไอ
- จาวา เซอร์ฟเล็ต
- JavaScript ฝั่งเซิร์ฟเวอร์
- โปรโตคอล Apache JServ
- ซีโร่ซี ไอซ์
- ซิสโก้ เอทช์
- ISAPI ( Internet Server Application Programming Interface) (Microsoft)
ลิงก์ภายนอก
สรุปเนื้อหา
ข้อมูลสำคัญจากบทความ
ข้อมูลสำคัญเกี่ยวกับ แร็ค (อินเทอร์เฟซเว็บเซิร์ฟเวอร์)
Rack คืออินเทอร์เฟซแบบโมดูลาร์ระหว่าง เว็บเซิร์ฟเวอร์ และ เว็บแอปพลิเคชัน ที่พัฒนาด้วย ภาษาโปรแกรม Ruby ด้วย Rack อินเทอร์เฟซการเขียนโปรแกรมแอปพลิเคชัน (API) สำหรับ เว็บเฟรมเวิร์ก...
ภาพรวม
ลักษณะเฉพาะของแอปพลิเคชัน Rack คือ อ็อบเจ็กต์แอปพลิเคชันจะตอบสนองต่อเมธอด call โดยเมธอด call จะรับอ็อบเจ็กต์สภาพแวดล้อมเป็นอาร์กิวเมนต์และส่งคืนอ็อบเจ็กต์การตอบสนองของ Rack
ตัวอย่างการใช้งาน
ตัวอย่างแอปพลิเคชัน " Hello World " ที่ใช้งานร่วมกับ Rack ได้ โดยใช้ ไวยากรณ์ Ruby :
ดูเพิ่มเติม
Python WSGI เพิร์ล PSGI จาวาสคริปต์ JSGI วาง Python พูดคุยเล็กๆ ริมทะเล ฟาสต์ซีจีไอ จาวา เซอร์ฟเล็ต JavaScript ฝั่งเซิร์ฟเวอร์ โปรโตคอล Apache JServ ซีโร่ซี ไอซ์ ซิสโก้ เอทช์ ISAPI ( Internet Server Application Programming Interface) (Microsoft)