บทนำ REST API
ข้อมูลทั่วไปเกี่ยวกับ REST API และหลักการ
โมดูลแรกจบลงด้วยการที่คุณสร้างคำขอ HTTP ส่งและรับการตอบกลับ
เราจะทำเช่นนี้อีกหลายครั้งในอนาคต เราจะส่งคำขอไปยังเซิร์ฟเวอร์ของบุคคลที่สาม เราจะสร้างแอปพลิเคชันที่ยอมรับคำขอดังกล่าวและตอบกลับ เราจะสร้างตรรกะที่ซับซ้อนสำหรับการประมวลผลคำขอ
ดังนั้นจึงเป็นการดีที่จะศึกษาทุกสิ่งที่เกี่ยวข้องกับคำขอเหล่านี้อย่างถี่ถ้วนเพื่อวิเคราะห์โดยละเอียด เพื่อให้คุณไม่เพียงแค่คัดลอกคำขอที่ไหนสักแห่งแล้วทำซ้ำ แต่ควรเข้าใจว่ามันทำงานอย่างไร
นี่คือสิ่งที่เราจะทำในโมดูลที่สอง ไปกันเถอะ!
ข้อมูลทั่วไป
เริ่มจากข้อมูลทั่วไปกันก่อน
หากคุณทำการบ้านในโมดูลแรกและศึกษาเอกสารประกอบ คุณควรสังเกตเห็นตัวย่อ API อันที่จริง เอกสารประกอบ API เป็นสิ่งแรกที่นักพัฒนาควรศึกษาหากต้องการทำความเข้าใจการโต้ตอบกับบริการหรือแอปพลิเคชันบางอย่างบนเครือข่าย
เอพีไอ
API - อินเทอร์เฟซการเขียนโปรแกรมแอปพลิเคชัน นี่เป็นคำอธิบายวิธีที่ไคลเอนต์และเซิร์ฟเวอร์สามารถสื่อสารระหว่างกันได้ เราเปิดเอกสาร API และเรียนรู้วิธีรับข้อมูลที่จำเป็นจากเซิร์ฟเวอร์จากที่นั่น
เราต้องการให้ปฏิสัมพันธ์นี้เรียบง่ายและเข้าใจได้เสมอ สิ่งนี้ทำให้งานง่ายขึ้นสำหรับทั้งนักพัฒนา (ไม่จำเป็นต้องสร้างวงล้อใหม่เมื่อออกแบบบริการใหม่) และผู้ใช้ (บริการจะเรียนรู้ได้ง่ายกว่ามากหากทำงานบนหลักการเดียวกันกับบริการที่คุ้นเคยก่อนหน้านี้) และนี่คือสิ่งที่ควรค่าแก่การจดจำคำศัพท์ใหม่ - REST
พักผ่อน
REST ย่อมาจาก Representational State Transfer อาจฟังดูไม่ชัดเจน แต่พูดง่ายๆ ก็คือ REST เป็นรูปแบบการโต้ตอบ (แลกเปลี่ยนข้อมูล) ระหว่างไคลเอนต์และเซิร์ฟเวอร์
นี่ไม่ใช่กฎและข้อกำหนดที่ตายตัว REST ไม่ได้บังคับให้ใช้ภาษาโปรแกรมเฉพาะใดๆ และไม่ได้ผูกมัดกับแนวทางปฏิบัติที่เข้มงวด REST เรียกว่ารูปแบบสถาปัตยกรรมและกำหนดหลักการ 6 ประการที่สถาปัตยกรรมระบบต้องปฏิบัติตาม
ดังนั้น API ที่พัฒนาขึ้นโดยคำนึงถึงหลักการของ REST จึงเรียกว่า REST API และตัวแอปพลิเคชันเองเรียกว่า RESTful
เราจะสร้างแอปพลิเคชัน RESTful ดังกล่าว ดังนั้นจึงควรหารือเกี่ยวกับหลักการที่พวกเขาจะปฏิบัติตามทันที
หลักการสงบ
โมเดลไคลเอ็นต์-เซิร์ฟเวอร์ หลักการกำหนดการแยกไคลเอนต์และเซิร์ฟเวอร์ ความแตกต่างของความต้องการของพวกเขา ลูกค้าไม่ต้องกังวลว่าข้อมูลจะถูกจัดเก็บอย่างไร สิ่งสำคัญคือต้องออกให้ตามคำขอ ในทางกลับกัน เซิร์ฟเวอร์ไม่สนใจว่าไคลเอนต์จะทำอะไรกับข้อมูลนี้ ประมวลผลและแสดงข้อมูลต่อไปอย่างไร สิ่งนี้ช่วยให้พวกเขาพัฒนาอย่างเป็นอิสระจากกัน และปรับปรุงความสามารถในการปรับขนาดของระบบ
ความไร้สัญชาติ หลักการนี้หมายความว่าเซิร์ฟเวอร์ไม่ควร "คิดออก" การตอบสนองตามประสบการณ์ก่อนหน้านี้กับไคลเอนต์นี้ คำขอใด ๆ ถูกสร้างขึ้นในลักษณะที่มีข้อมูลที่จำเป็นทั้งหมดสำหรับการประมวลผล โดยไม่คำนึงถึงคำขอก่อนหน้านี้
แคช มีกลไกการแคชเพื่อลดข้อมูลที่ส่ง ตัวอย่างเช่น หากมีการแสดงโลโก้ในบางหน้า การร้องขอโลโก้จากเซิร์ฟเวอร์ทุกครั้งก็ไม่สมเหตุสมผล ไม่เปลี่ยนแปลงบ่อยพอที่จะได้รับเพียงครั้งเดียวและบันทึกไว้ในคอมพิวเตอร์ของลูกค้าในแคช แต่ถ้าเราต้องการรับข้อมูลเกี่ยวกับความเร็วปัจจุบันของรถ แคชจะไม่ช่วย แต่อย่างใด หลักการนี้กำหนดว่าข้อมูลที่ส่งโดยเซิร์ฟเวอร์ควรกำหนดให้แคชได้หรือไม่
อินเตอร์เฟซเครื่องแบบ หลักการกำหนดรูปแบบเดียวของการโต้ตอบระหว่างไคลเอ็นต์และเซิร์ฟเวอร์ โครงสร้างของคำขอทั้งหมดจะต้องเหมือนกัน ข้อมูลจะต้องส่งในรูปแบบเดียวกันโดยไม่คำนึงว่าใครเป็นผู้ร้องขอ
ระบบเลเยอร์ . ลูกค้าและเซิร์ฟเวอร์ไม่จำเป็นต้องสื่อสารโดยตรง การส่งข้อมูลสามารถผ่านโหนดกลางได้หลายโหนด ในกรณีนี้ ระบบได้รับการออกแบบให้ทั้งไคลเอ็นต์และเซิร์ฟเวอร์ไม่รู้ว่าพวกเขากำลังโต้ตอบกับแอปพลิเคชันสุดท้ายหรือโหนดกลาง สิ่งนี้ทำให้คุณสามารถปรับสมดุลโหลดบนเซิร์ฟเวอร์ เพิ่มความสามารถในการปรับขนาด
รหัสตามความต้องการ (ไม่บังคับ) . หลักการเดียวที่ไม่บังคับ ไคลเอ็นต์สามารถขยายฟังก์ชันการทำงานได้โดยดาวน์โหลดโค้ดปฏิบัติการจากเซิร์ฟเวอร์ (เช่น สคริปต์) ในกรณีนี้ รหัสควรดำเนินการตามต้องการเท่านั้น